.markdown-content{width:100%;min-width:0;max-width:100%;padding:var(--content-pad);overflow-wrap:break-word;display:flow-root}.markdown-content>*{min-width:0}.markdown-content img{max-width:100%;height:auto;display:block}.md-component{margin:var(--space-6) 0;padding:var(--space-5)}.md-component>:last-child,.md-component>div>:last-child{margin-bottom:0}.md-steps>ol{gap:var(--space-6);counter-reset:md-step;grid-template-columns:minmax(0,1fr);margin:0;padding-left:0;list-style:none;display:grid}.md-steps>ol>li{counter-increment:md-step;min-width:0;position:relative}.md-before-after-grid,.md-comparison-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.md-before-after-grid>div,.md-comparison-grid>div,.md-faq>details{min-width:0}.markdown-table-wrap{width:100%;max-width:100%;overflow-x:auto}.markdown-content table{border-collapse:collapse;table-layout:fixed;width:100%}.markdown-content th,.markdown-content td{overflow-wrap:anywhere}.markdown-content pre{overflow:auto}.markdown-content pre.shiki{tab-size:4}.markdown-content pre.shiki code{min-width:max-content;display:block}.markdown-content pre.shiki .line{min-block-size:1.65em;display:block}:root[data-theme=dark] .markdown-content pre.shiki,:root[data-theme=dark] .markdown-content pre.shiki span{color:var(--shiki-dark)!important;background-color:#0000!important}:root[data-theme=dark] .markdown-content pre.shiki{background-color:var(--color-surface-sunk)!important}:root[data-theme=light] .markdown-content pre.shiki,:root[data-theme=light] .markdown-content pre.shiki span{color:var(--shiki-light)!important;background-color:#0000!important}:root[data-theme=light] .markdown-content pre.shiki{background-color:var(--color-surface-sunk)!important}.markdown-content ul.task-list{padding-left:0;list-style:none}.markdown-content{color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body)}.markdown-content>:first-child{margin-block-start:0}.markdown-content>:last-child{margin-block-end:0}.markdown-content p{margin-block:var(--space-6)}.markdown-content :is(h2,h3,h4,h5,h6){color:var(--color-ink-strong);font-family:var(--font-display);font-weight:600;line-height:var(--leading-tight);overflow-wrap:break-word;margin-inline:0}.markdown-content h2{margin-block:var(--space-8) var(--space-5);border-block-start:var(--border-divider);font-size:var(--text-xl);letter-spacing:var(--tracking-tight);padding-block-start:var(--space-5)}.markdown-content h3{margin-block:var(--space-7) var(--space-4);font-size:var(--text-lg)}.markdown-content h4{margin-block:var(--space-6) var(--space-3);font-size:var(--text-md)}.markdown-content :is(h5,h6){margin-block:var(--space-6) var(--space-3);font-size:var(--text-base)}.markdown-content :is(h2,h3,h4,h5,h6)[id]{scroll-margin-block-start:calc(var(--chrome-menubar) + var(--space-5))}.markdown-content a{color:var(--color-accent-strong);text-underline-offset:.15em;text-decoration-line:underline;text-decoration-thickness:1px}.markdown-content a:hover{background:var(--color-accent);color:var(--color-on-accent)}.markdown-content a.glossary-mention{color:inherit;text-decoration-line:underline;text-decoration-style:dotted;text-decoration-color:var(--color-accent-strong);text-underline-offset:.2em;text-decoration-thickness:1px}.markdown-content a.glossary-mention:hover{background:var(--color-accent);color:var(--color-on-accent);text-decoration-color:currentColor}.markdown-content :is(ul,ol){margin-block:var(--space-6);padding-inline-start:var(--space-6)}.markdown-content ul{list-style-type:square}.markdown-content li{margin-block:var(--space-3)}.markdown-content li::marker{color:var(--color-accent)}.markdown-content :is(li>ul,li>ol){margin-block:var(--space-3)}.markdown-content hr{margin-block:var(--space-8);border-style:none;border-block-start:var(--border-hair)}.markdown-content blockquote{margin-block:var(--space-6);padding-block:var(--space-2);border-inline-start:3px solid var(--color-line);color:var(--color-ink-strong);font-family:var(--font-display);font-size:var(--text-md);margin-inline:0;padding-inline-start:var(--space-5);font-style:italic}.markdown-content :not(pre)>code{padding-block:var(--space-1);padding-inline:var(--space-2);border:var(--border-hair);border-radius:var(--radius-1);background:var(--color-surface-sunk);color:var(--color-ink);font-family:var(--font-mono);font-size:.9em}.markdown-content a>code{color:inherit}.markdown-content .markdown-table-wrap{margin-block:var(--space-6);border:var(--border-hair);background:var(--color-surface-sunk);box-shadow:var(--bevel-well)}.markdown-content thead th{background:var(--color-titlebar-idle);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:var(--tracking-chrome);text-align:start;font-weight:600}.markdown-content :is(th,td){padding-block:var(--space-3);padding-inline:var(--space-4);border-block-end:var(--border-divider);font-size:var(--text-sm);line-height:var(--leading-ui);vertical-align:top}.markdown-content tbody tr:last-child :is(th,td){border-block-end:0}.markdown-content tbody th{text-align:start;font-weight:600}.markdown-content img{margin-block:var(--space-6);border:var(--border-hair);border-radius:var(--radius-0);box-shadow:var(--shadow-panel);cursor:zoom-in}.markdown-content p:has(>img)>img{margin-block-end:0}.markdown-content p:has(>img:only-child)+p:has(>em:only-child){margin-block:var(--space-3) var(--space-6);color:var(--color-ink-muted);font-size:var(--text-sm);line-height:var(--leading-ui)}.markdown-content p:has(>img:only-child)+p:has(>em:only-child) a,.markdown-content p:has(>img)>em a{color:inherit;text-underline-offset:.2em;text-decoration-line:underline}.markdown-content p:has(>img:only-child)+p:has(>em:only-child) a:hover,.markdown-content p:has(>img)>em a:hover{color:var(--color-accent-strong)}.markdown-content p:has(>img)>em{color:var(--color-ink-muted);font-size:var(--text-sm);line-height:var(--leading-ui);margin-block-start:var(--space-3);display:block}.markdown-content ul.task-list{margin-block:var(--space-6)}.markdown-content .task-list-item{margin-block:var(--space-3)}.markdown-content .task-checkbox{gap:var(--space-3);align-items:baseline;display:flex}.markdown-content .task-checkbox input{inline-size:var(--space-5);block-size:var(--space-5);accent-color:var(--color-accent);flex:none}.markdown-content .md-code-block{margin-block:var(--space-6);border:var(--border-hair);background:var(--color-surface-sunk);box-shadow:var(--bevel-well);grid-template-columns:minmax(0,1fr) auto;display:grid}.md-code-lang{padding-block:var(--space-2);padding-inline:var(--space-4);color:var(--color-ink-muted);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-label);grid-area:1/1;align-self:center}.markdown-content .md-code-block>.md-copy-button{grid-area:1/2}.markdown-content .md-code-block>pre.shiki{padding:var(--space-5);border-block-start:var(--border-divider);font-size:var(--text-sm);line-height:var(--leading-ui);grid-area:2/1/auto/-1;margin-block:0}.md-copy-button{margin:var(--space-2);min-block-size:var(--chrome-statusbar);padding-block:var(--space-1);padding-inline:var(--space-3);border:var(--border-hair);border-radius:var(--radius-1);background:var(--color-control);color:var(--color-ink);box-shadow:var(--bevel-out), var(--shadow-key);font-family:var(--font-body);font-size:var(--text-2xs);letter-spacing:var(--tracking-chrome);cursor:pointer;transition:box-shadow var(--dur-press) var(--ease-press), translate var(--dur-press) var(--ease-press);place-self:center end;font-weight:600}.md-copy-button:hover{background:var(--color-surface)}.md-copy-button:active{box-shadow:var(--bevel-in), var(--shadow-none);translate:1px 1px}.md-component{border:var(--border-hair);border-radius:var(--radius-0);background:var(--color-surface-sunk);box-shadow:var(--bevel-well)}.md-component>.md-component-label,.md-component>header{margin-block:calc(-1 * var(--space-5)) var(--space-5);margin-inline:calc(-1 * var(--space-5));padding-block:var(--space-2);padding-inline:var(--space-4);border-block-end:var(--border-divider);color:var(--color-ink-muted);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-label);font-weight:400;line-height:var(--leading-ui)}.md-component>header{align-items:center;gap:var(--space-3);padding-block:0;padding-inline:0;padding-inline-start:var(--space-4);display:flex}.md-component>header>.md-component-label{border-block-end:0;flex:auto;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.md-terminal,.md-file-tree,.md-faq{padding-block:0;padding-inline:0}.md-terminal>header,.md-file-tree>.md-component-label,.md-faq>.md-component-label{margin-block:0;margin-inline:0}.md-callout{border-inline-start-style:solid;border-inline-start-width:3px}.md-callout--tip{border-inline-start-color:var(--color-success)}.md-callout--info{border-inline-start-color:var(--color-line)}.md-callout--warning{border-inline-start-color:var(--color-warning)}.md-callout--danger{border-inline-start-color:var(--color-danger)}.md-callout--important{border-inline-start-color:var(--color-accent)}.md-callout--tip>.md-component-label:before{content:"tip · "}.md-callout--info>.md-component-label:before{content:"info · "}.md-callout--warning>.md-component-label:before{content:"warning · "}.md-callout--danger>.md-component-label:before{content:"danger · "}.md-callout--important>.md-component-label:before{content:"important · "}.md-takeaway{border-inline-start:3px solid var(--color-accent)}.markdown-content .md-terminal{border-color:var(--color-line);background:var(--color-surface-dark);color:var(--color-on-dark);position:relative}.md-terminal>header{color:var(--color-on-dark);border-block-end-color:var(--color-line-soft)}.md-terminal pre{padding:var(--space-5);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-ui);margin-block:0}.md-terminal pre code:before{content:"$ ";color:var(--color-accent)}.md-terminal:after{content:"";background-image:var(--scanline);pointer-events:none;position:absolute;inset:0}.md-file-tree pre{padding:var(--space-5);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-ui);margin-block:0;overflow-x:auto}.markdown-content .md-steps>ol{padding-inline-start:0}.markdown-content .md-steps>ol>li{padding-inline-start:var(--space-7)}.markdown-content .md-steps>ol>li:before{content:counter(md-step);inline-size:var(--space-6);block-size:var(--space-6);border:var(--border-hair);border-radius:var(--radius-1);background:var(--color-control);color:var(--color-ink);box-shadow:var(--bevel-out);font-family:var(--font-mono);font-size:var(--text-2xs);font-variant-numeric:tabular-nums;line-height:var(--leading-chrome);place-content:center;display:grid;position:absolute;inset-block-start:var(--space-1);inset-inline-start:0}.md-prerequisites ul:not(.task-list){padding-inline-start:0;list-style:none}.md-prerequisites ul:not(.task-list)>li{padding-inline-start:var(--space-6);position:relative}.md-prerequisites ul:not(.task-list)>li:before{content:"[ ]";color:var(--color-ink-muted);font-family:var(--font-mono);font-size:var(--text-xs);position:absolute;inset-inline-start:0}.markdown-content :is(.md-before-after-grid,.md-comparison-grid)>div{padding:var(--space-4);border:var(--border-hair);background:var(--color-control);box-shadow:var(--bevel-out)}.markdown-content .md-before-after-grid>div:first-child{border-inline-start:3px solid var(--color-danger)}.markdown-content .md-before-after-grid>div:last-child{border-inline-start:3px solid var(--color-success)}.md-panel-label{border-block-end:var(--border-divider);color:var(--color-ink-muted);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-label);margin-block-end:var(--space-3);padding-block-end:var(--space-2);display:block}.md-compatibility>header>strong{padding-block:var(--space-1);padding-inline:var(--space-2);border:var(--border-hair);border-radius:var(--radius-1);background:var(--color-control);color:var(--color-ink);font-family:var(--font-mono);font-size:var(--text-2xs);font-variant-numeric:tabular-nums;flex:none;margin-inline-end:var(--space-3);font-weight:400}.md-faq>details{border-block-end:var(--border-divider)}.md-faq>details:last-child{border-block-end:0}.md-faq summary{align-items:baseline;gap:var(--space-3);padding-block:var(--space-3);padding-inline:var(--space-4);color:var(--color-ink-strong);font-weight:600;line-height:var(--leading-ui);cursor:pointer;list-style:none;display:flex}.md-faq summary::-webkit-details-marker{display:none}.md-faq summary:before{content:"+";color:var(--color-accent);font-family:var(--font-mono);flex:none}.md-faq>details[open]>summary:before{content:"−"}.md-faq summary:hover{background:var(--color-accent);color:var(--color-on-accent)}.md-faq summary:hover:before{color:var(--color-on-accent)}.md-faq>details>:not(summary){margin-block:var(--space-3);padding-inline:var(--space-4)}.md-faq>details>:last-child{margin-block-end:var(--space-4)}.md-next-steps ul{padding-inline-start:0;list-style:none}.md-next-steps li{border-block-end:var(--border-divider);margin-block:0}.md-next-steps li:last-child{border-block-end:0}.md-next-steps li>a{padding-block:var(--space-3);text-decoration-line:none;display:block}.md-next-steps li>a:before{content:"→ ";font-family:var(--font-mono)}@media (width<=48rem){.md-before-after-grid,.md-comparison-grid{grid-template-columns:minmax(0,1fr)}}.article-cover{border-block-end:var(--border-divider);margin:0;padding-block-end:var(--space-5)}.article-cover figcaption{color:var(--color-ink-muted);font-size:var(--text-sm);line-height:var(--leading-ui);margin-block-start:var(--space-3)}.dock-shade[data-astro-cid-rgtuemvm]{min-inline-size:0}.dock-bar[data-astro-cid-rgtuemvm]{cursor:pointer;margin-block:0;list-style:none}.dock-bar[data-astro-cid-rgtuemvm]::-webkit-details-marker{display:none}.dock-bar[data-astro-cid-rgtuemvm]:after{content:"";block-size:.4em;inline-size:.4em;transition:rotate var(--dur-press) var(--ease-press);border-block-end:2px solid;border-inline-end:2px solid;flex:none;margin-inline-start:var(--space-2);translate:0 -.12em;rotate:45deg}.dock-shade[data-astro-cid-rgtuemvm]:not([open]) .dock-bar[data-astro-cid-rgtuemvm]:after{translate:0 .12em;rotate:-45deg}.dock-body[data-astro-cid-rgtuemvm]{margin-block:0;padding-inline-start:0;list-style:none}.dock-body[data-astro-cid-rgtuemvm] li[data-astro-cid-rgtuemvm]{min-inline-size:0}.dock-body[data-astro-cid-rgtuemvm] a{overflow-wrap:anywhere}.file[data-astro-cid-7ahxywo7]{color:var(--color-ink);text-decoration:none}.file[data-astro-cid-7ahxywo7]:hover .win-bar{background:var(--color-accent);color:var(--color-on-accent)}.file[data-astro-cid-7ahxywo7]:hover .file-open[data-astro-cid-7ahxywo7]{text-decoration-line:underline}.file-body[data-astro-cid-7ahxywo7]{gap:var(--space-3);padding:var(--space-5);align-content:start;display:grid}.file-title[data-astro-cid-7ahxywo7]{color:var(--color-ink-strong);font-family:var(--font-display);font-size:var(--text-md);font-weight:600;line-height:var(--leading-tight);overflow-wrap:anywhere;margin-block:0}.file-desc[data-astro-cid-7ahxywo7]{-webkit-line-clamp:2;color:var(--color-ink);font-size:var(--text-sm);line-height:var(--leading-ui);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.file-open[data-astro-cid-7ahxywo7]{margin-inline-start:auto}.desktop--article[data-astro-cid-qbivihoc],.desktop--solo[data-astro-cid-qbivihoc]{max-inline-size:calc(var(--content-article) + 2 * var(--space-5))}@media (width>=64rem){.desktop--article[data-astro-cid-qbivihoc]{max-inline-size:calc(var(--content-article) + var(--chrome-dock) + var(--chrome-dock-gap) + 2 * var(--space-5))}}.article-head[data-astro-cid-qbivihoc]{padding:var(--content-pad)}.article-head[data-astro-cid-qbivihoc] h1[data-astro-cid-qbivihoc]{font-family:var(--font-display);font-size:var(--text-3xl);letter-spacing:var(--tracking-tight);font-weight:600;line-height:var(--leading-tight);overflow-wrap:break-word;margin:0}.article-excerpt[data-astro-cid-qbivihoc]{margin:var(--space-4) 0 var(--space-5);font-size:var(--text-md);line-height:var(--leading-body)}.article-head[data-astro-cid-qbivihoc] .meta[data-astro-cid-qbivihoc] a[data-astro-cid-qbivihoc]{color:inherit;text-underline-offset:.18em;text-decoration-line:underline}.article-games[data-astro-cid-qbivihoc]{gap:var(--space-2) var(--space-3);margin:0 0 var(--space-4);flex-wrap:wrap;align-items:baseline;display:flex}.article-games[data-astro-cid-qbivihoc] a[data-astro-cid-qbivihoc]{color:var(--color-ink);font-family:var(--font-display);text-underline-offset:.2em;font-weight:600;text-decoration-line:underline}.article-games[data-astro-cid-qbivihoc] a[data-astro-cid-qbivihoc]:hover{color:var(--color-accent-strong)}.article-tags[data-astro-cid-qbivihoc]{gap:var(--space-2);margin:var(--space-4) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.article-tags[data-astro-cid-qbivihoc] .key[data-astro-cid-qbivihoc]{color:var(--color-ink);text-decoration:none}.article-share[data-astro-cid-qbivihoc]{padding:0 var(--content-pad) var(--content-pad)}.article-body[data-astro-cid-qbivihoc] h2,.article-body[data-astro-cid-qbivihoc] h3,.article-body[data-astro-cid-qbivihoc] h4{scroll-margin-block-start:calc(var(--chrome-menubar) + var(--space-5))}.related-heading[data-astro-cid-qbivihoc]{margin:0 0 var(--space-5);font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;line-height:var(--leading-tight)}.related-grid[data-astro-cid-qbivihoc]{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));display:grid}@media (width<=40rem){.article-head[data-astro-cid-qbivihoc] h1[data-astro-cid-qbivihoc]{font-size:var(--text-2xl)}}.desktop[data-astro-cid-qbivihoc]{align-content:start;inline-size:100%}
