@layer components{.Hero{z-index:var(--joh-z-index-header-hero);margin-bottom:calc(var(--joh-nav-height) / 2)}@media (min-width:720px){.Hero{margin-bottom:var(--joh-nav-height)}}.Hero .container{width:100%;height:100%}.Hero .container .post-heading{background-color:var(--joh-c-hero-heading-bg);min-height:52vh;max-height:600px;color:var(--joh-c-white);flex-direction:column;justify-content:center;display:flex;position:relative;overflow:hidden}@media (max-width:719px){.Hero .container .post-heading{min-height:60dvh;max-height:none}.Hero .container .post-heading:before{content:"";flex:1 0 26dvh;min-height:0}.Hero .container .post-heading img{height:100%;min-height:unset;position:absolute;top:0;left:0}.Hero .container .post-heading .post-heading-info{flex:0 auto;position:relative}}.Hero .container .post-heading img{z-index:1;object-fit:cover;pointer-events:none;width:100%;min-height:52vh}@media (min-width:720px){.Hero .container .post-heading img{height:100%}}.Hero .container .post-heading .post-heading-gradient-overlay,.Hero .container .post-heading .post-heading-dark-overlay{z-index:2;opacity:0;height:100%;transition:opacity var(--duration-slow) var(--ease-out);position:absolute;top:0;bottom:0;left:0;right:0}.Hero .container .post-heading .post-heading-gradient-overlay{background:var(--joh-hero-gradient-overlay)}.Hero .container .post-heading .post-heading-dark-overlay{background-color:var(--joh-c-hero-overlay)}.Hero .container .post-heading.image-loaded .post-heading-gradient-overlay{opacity:.8}.Hero .container .post-heading.image-loaded .post-heading-dark-overlay{opacity:1}.Hero .container .post-heading .post-heading-info{z-index:var(--joh-z-index-layout-top);width:100%;height:min-content;text-shadow:var(--joh-hero-text-shadow);position:absolute;bottom:0}.Hero .container .post-heading .post-heading-info-container{width:var(--joh-layout-max-width);flex-direction:column;justify-content:center;height:min-content;margin:0 auto;padding-top:6rem;padding-bottom:2rem;display:flex}@media (max-width:1279px){.Hero .container .post-heading .post-heading-info-container{width:100%;padding:4rem 2rem 2rem}}@media (max-width:719px){.Hero .container .post-heading .post-heading-info-container{width:100%;padding:2rem 1rem}.Hero .container .post-heading .post-heading-info-container h1{width:100%}}.Hero .container .post-heading .post-heading-info-container .post-heading-tags{text-shadow:none;row-gap:0;margin-bottom:22px;font-size:16px;line-height:24px}@media (min-width:720px){.Hero .container .post-heading .post-heading-info-container .post-heading-tags{font-size:1.125rem;line-height:1.5rem}}.Hero .container .post-heading .post-heading-info-container h1{width:85%;font-size:36px;font-weight:900;line-height:44px;font-family:var(--joh-font-family-serif);letter-spacing:0;font-variation-settings:"opsz" auto;font-feature-settings:"kern" on}@media (max-width:419px){.Hero .container .post-heading .post-heading-info-container h1{width:100%}}@media (min-width:720px){.Hero .container .post-heading .post-heading-info-container h1{font-size:3.4375rem;line-height:3.9375rem}}@media (min-width:1280px){.Hero .container .post-heading .post-heading-info-container h1{line-height:60px}}.Hero .container .post-heading .post-heading-info-container .post-heading-subtitle{text-shadow:0 1px 4px #0003,0 2px 8px #00000040;margin-top:8px;font-size:20px;font-weight:600;line-height:30px}@media (min-width:720px){.Hero .container .post-heading .post-heading-info-container .post-heading-subtitle{font-size:1.125rem;font-weight:700;line-height:1.875rem}}.Hero .container .post-heading .post-heading-info-container .post-heading-meta{white-space:nowrap;flex-direction:row;margin-top:34px;font-size:16px;font-weight:400;display:flex}@media (max-width:1279px){.Hero .container .post-heading .post-heading-info-container .post-heading-meta{font-size:.875rem}}.Hero .container .post-heading .post-heading-info-container .post-heading-meta .article-publish-date{order:2}.Hero .container .post-heading .post-heading-info-container .post-heading-meta .article-authors{flex-wrap:wrap;align-items:center;gap:.25rem;margin-right:1rem;display:flex}.Hero .container .post-heading .post-heading-info-container .post-heading-meta .article-authors .author-separator{margin-right:.25rem}.Hero .container .post-heading .post-heading-info-container .post-heading-meta .article-author{margin-right:0}.Hero .container .post-heading .post-heading-info-container .post-heading-meta .article-author .author-name{text-shadow:0 1px 3px #00000026,0 1px 6px #0003;font-weight:700}@media (max-width:719px){.Hero .container .post-heading .post-heading-info-container .post-heading-meta .article-author .author-name{font-weight:600}}.Hero .container .taxonomies-banner{background-color:var(--joh-c-hero-banner-bg);justify-content:center;align-items:center;width:100%;min-height:190px;display:flex}.Hero .container .taxonomies-banner.has-bg{background-image:var(--joh-hero-bg);background-position:50% 0;background-repeat:no-repeat;background-size:cover}@media (max-width:419px){.Hero .container .taxonomies-banner.has-bg{background-position:-10%}}.Hero .container .taxonomies-meta{position:absolute}.Hero .container .taxonomies-meta h2{color:var(--joh-c-neutral-inverse);font-size:2.25rem;font-weight:700}.Hero .container .taxonomies-meta h2:before{margin-right:6px;font-weight:700}.Hero .container .taxonomies-meta p{color:var(--joh-c-text-muted);text-align:center;margin-top:1rem;font-size:1rem;line-height:30px}.Hero .container .taxonomies-meta .banner-title{color:var(--joh-c-text-muted)}.Hero.no-cover .post-heading-gradient-overlay,.Hero.no-cover .post-heading-dark-overlay{display:none}.zoom-overlay{z-index:999;opacity:0;background:var(--joh-c-bg);background:color-mix(in srgb, var(--joh-c-bg) 88%, transparent);cursor:zoom-out;transition:opacity var(--duration-medium-zoom) ease;-webkit-backdrop-filter:blur(5rem);backdrop-filter:blur(5rem);position:fixed;top:0;bottom:0;left:0;right:0}.zoom-image--opened{z-index:1000;opacity:1;cursor:zoom-out;object-fit:contain;transition:top var(--duration-medium-zoom) ease, left var(--duration-medium-zoom) ease, width var(--duration-medium-zoom) ease, height var(--duration-medium-zoom) ease, opacity var(--duration-medium-zoom) ease;margin:0;position:fixed;transform:none}.zoom-overlay,.zoom-image--opened{border:none!important;border-radius:0!important}.AsideOutline .content{border-left:1px solid var(--joh-c-divider);padding-left:16px;font-size:13px;font-weight:500;position:relative}.AsideOutline .outline-marker{--outline-marker-ease:cubic-bezier(0, 1, .5, 1);z-index:0;opacity:0;background-color:var(--joh-c-text-1);width:2px;height:18px;transition:top var(--duration-fast) var(--outline-marker-ease), background-color var(--duration-very-slow), opacity var(--duration-fast);border-radius:2px;position:absolute;left:-1px}.AsideOutline .outline-title{font-size:14px;font-weight:600;line-height:32px}.AsideOutline .outline-link{color:var(--joh-c-text-2);white-space:nowrap;text-overflow:ellipsis;transition:color var(--duration-very-slow);font-size:14px;font-weight:400;line-height:32px;display:block;overflow:hidden}.AsideOutline .outline-link:hover,.AsideOutline .outline-link.active{color:var(--joh-c-text-1);transition:color var(--duration-fast)}.AsideOutline .DocOutlineItem>li>ul{padding-left:16px;padding-right:16px}.footnotes{border-top:1px solid var(--joh-c-divider);padding-top:1rem}.footnotes ol{color:var(--joh-c-text-2)}.footnotes a{font-variant-emoji:text}.content-container :not(:-webkit-any(pre,h1,h2,h3,h4,h5,h6))>code{font-size:var(--joh-code-font-size)}.content-container :not(:is(pre,h1,h2,h3,h4,h5,h6))>code{font-size:var(--joh-code-font-size)}.content-container :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--joh-c-bg-alt)!important}.content-container h1>code,.content-container h2>code,.content-container h3>code,.content-container h4>code{font-size:.9em}.content-container div[data-lang],.content-container pre.giallo,.content-container pre[class*=language-]{margin:var(--joh-code-block-margin-block) calc(var(--joh-code-block-mobile-bleed) * -1);position:relative;overflow:hidden;background-color:var(--joh-c-bg-alt)!important}.content-container div[data-lang]+div[data-lang],.content-container div[class$=-api]+div[data-lang],.content-container div[data-lang]+div[class$=-api]>div[data-lang]{margin-top:-8px}.content-container [data-lang] pre,.content-container pre.giallo,.content-container pre[class*=language-],.content-container code[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none;direction:ltr}.content-container pre[data-lang],.content-container pre.giallo,.content-container pre[class*=language-]{z-index:1;padding:var(--joh-code-block-padding-top) 0 var(--joh-code-block-padding-bottom);background:0 0;margin:0;overflow-x:auto}.content-container code[class*=language-],.content-container pre.giallo>code,.content-container pre[class*=language-]>code{width:-moz-fit-content;width:fit-content;min-width:100%;padding:0 var(--joh-code-block-padding-right) 0 var(--joh-code-block-padding-left);line-height:var(--joh-code-line-height);font-size:var(--joh-code-font-size);display:block}.content-container pre.giallo>code[data-lang]:before,.content-container pre[class*=language-]>code[data-lang]:before{content:attr(data-lang);top:var(--joh-code-lang-top);right:var(--joh-code-lang-right);z-index:2;font-size:var(--joh-code-lang-font-size);font-weight:var(--joh-code-lang-font-weight);-webkit-user-select:none;user-select:none;text-transform:uppercase;position:absolute}.content-container [data-lang]>span.lang{top:var(--joh-code-lang-top);right:var(--joh-code-lang-right);z-index:2;font-size:var(--joh-code-lang-font-size);font-weight:var(--joh-code-lang-font-weight);-webkit-user-select:none;user-select:none;text-transform:uppercase;opacity:.8;position:absolute}.content-container code[class*=language-] .highlighted,.content-container code[class*=language-] .diff,.content-container pre.giallo .giallo-l{margin:0 calc(var(--joh-code-block-padding-left) * -1);padding:0 var(--joh-code-block-padding-left);width:calc(100% + (var(--joh-code-block-padding-left) * 2));display:block}.content-container code[class*=language-] .diff{position:relative}.content-container code[class*=language-] .diff.remove:before{content:"-";position:absolute;left:.75rem}.content-container code[class*=language-] .diff.add:before{content:"+";position:absolute;left:.75rem}.content-container div[data-lang].line-numbers-mode{padding-left:var(--joh-code-line-number-width)}.content-container .line-numbers-wrapper{z-index:3;padding-top:var(--joh-code-block-padding-top);width:var(--joh-code-line-number-width);text-align:center;font-family:var(--joh-font-family-mono);line-height:var(--joh-code-line-height);font-size:var(--joh-code-font-size);position:absolute;top:0;bottom:0;left:0}@media (min-width:720px){.content-container div[data-lang],.content-container pre.giallo,.content-container pre[class*=language-]{margin:var(--joh-code-block-margin-block) 0;border-radius:8px}}@media (max-width:719px){.content-container li div[data-lang]{border-radius:var(--joh-code-block-mobile-item-radius) 0 0 var(--joh-code-block-mobile-item-radius)}.content-container div[data-lang],.content-container pre.giallo,.content-container pre[class*=language-]{border-radius:0}.content-container code[class*=language-],.content-container pre.giallo>code,.content-container pre[class*=language-]>code{padding-left:1rem;padding-right:1rem}}.content-container blockquote[class^=markdown-alert]{border-radius:var(--joh-custom-block-border-radius);background:var(--joh-c-custom-block-bg);color:var(--joh-c-text-2);font-size:var(--joh-custom-block-font-size);line-height:var(--joh-custom-block-line-height);transition:background-color var(--duration-fast), color var(--duration-fast);margin:24px 0;padding:.875rem 1rem 1rem}.content-container blockquote[class^=markdown-alert]:before{text-transform:uppercase;color:var(--joh-c-custom-block-title,var(--joh-c-text-1));content:var(--joh-custom-block-title,"");margin-bottom:.35rem;font-size:.8125rem;font-weight:700;display:block}.content-container blockquote[class^=markdown-alert]>p{color:inherit;margin:0}.content-container blockquote[class^=markdown-alert]>p+p,.content-container blockquote[class^=markdown-alert]>ul,.content-container blockquote[class^=markdown-alert]>ol,.content-container blockquote[class^=markdown-alert]>pre{margin-top:.75rem}.content-container blockquote.markdown-alert-note{--joh-custom-block-title:"Note";--joh-c-custom-block-bg:var(--joh-c-bg-alt)}.content-container blockquote.markdown-alert-tip{--joh-custom-block-title:"Tip";--joh-c-custom-block-bg:var(--joh-c-custom-block-tip-bg);--joh-c-custom-block-title:var(--joh-c-success-1)}.content-container blockquote.markdown-alert-important{--joh-custom-block-title:"Important";--joh-c-custom-block-bg:var(--joh-c-custom-block-important-bg);--joh-c-custom-block-title:var(--joh-c-important-1)}.content-container blockquote.markdown-alert-warning{--joh-custom-block-title:"Warning";--joh-c-custom-block-bg:var(--joh-c-custom-block-warning-bg);--joh-c-custom-block-title:var(--joh-c-warning-1)}.content-container blockquote.markdown-alert-caution{--joh-custom-block-title:"Caution";--joh-c-custom-block-bg:var(--joh-c-custom-block-caution-bg);--joh-c-custom-block-title:var(--joh-c-caution-1)}.content-container blockquote[class^=markdown-alert] :not(pre)>code{background:var(--joh-c-custom-block-code-bg)}.content-container article:first-child{padding:0 0 96px}.content-container h1,.content-container h2,.content-container h3,.content-container h4,.content-container h5,.content-container h6{outline:none;font-weight:500;position:relative}.content-container h1{letter-spacing:-.02em;font-size:32px;line-height:40px}.content-container h2{letter-spacing:-.02em;margin:0 0 16px;padding-top:24px;font-size:24px;line-height:32px}.content-container h3{letter-spacing:-.01em;margin:32px 0 0;font-size:20px;line-height:28px}.content-container h4{letter-spacing:-.01em;margin:24px 0 0;font-size:18px;line-height:24px}.content-container h1,.content-container h2,.content-container h3,.content-container h4,.content-container h5,.content-container h6,.content-container .footnote-reference{scroll-margin-top:calc(var(--joh-nav-height,64px) + 16px)}.content-container .header-anchor{-webkit-user-select:none;user-select:none;opacity:0;transition:color var(--duration-fast), opacity var(--duration-fast);margin-left:-.87em;font-weight:500;text-decoration:none;position:absolute;top:0;left:0}.content-container li::marker{font-family:var(--joh-font-family-serif);text-align:right;font-size:1rem;font-weight:700}.content-container .header-anchor:before{content:var(--joh-header-anchor-symbol)}.content-container h1:hover .header-anchor,.content-container h1 .header-anchor:focus,.content-container h2:hover .header-anchor,.content-container h2 .header-anchor:focus,.content-container h3:hover .header-anchor,.content-container h3 .header-anchor:focus,.content-container h4:hover .header-anchor,.content-container h4 .header-anchor:focus,.content-container h5:hover .header-anchor,.content-container h5 .header-anchor:focus,.content-container h6:hover .header-anchor,.content-container h6 .header-anchor:focus{opacity:1}.content-container h2 .header-anchor{top:24px}.content-container p,.content-container summary{margin:16px 0}.content-container p{line-height:28px}.content-container blockquote{transition:border-color var(--duration-very-slow);color:var(--joh-c-text-2);border-left:1px solid var(--joh-c-divider);margin:16px 0;padding-left:16px}.content-container blockquote>p{transition:color var(--duration-very-slow);margin:0;font-size:16px}.content-container a{color:var(--joh-c-brand-1);text-underline-offset:2px;transition:color var(--duration-fast), opacity var(--duration-fast);font-weight:500}.content-container a:hover{color:var(--joh-c-brand-2);text-decoration:underline}.content-container strong{font-weight:600}.content-container p>img,.content-container lazy-image::part(img){block-size:auto;inline-size:100%;margin-inline-start:auto;margin-inline-end:auto;display:block}.content-container ul,.content-container ol{margin:16px 0;padding-left:1.25rem}.content-container ul{list-style:outside}.content-container ol{list-style:decimal}.content-container li>ol,.content-container li>ul{margin:8px 0 0}.content-container li+li{margin-top:8px}.content-container table{border-collapse:collapse;table-layout:fixed;width:100%;margin:20px 0;display:table}.content-container tr{background-color:var(--joh-c-bg);border-top:1px solid var(--joh-c-divider);width:100%;transition:background-color var(--duration-very-slow)}.content-container tr:nth-child(2n){background-color:var(--joh-c-bg-soft)}.content-container th,.content-container td{border:1px solid var(--joh-c-divider);vertical-align:top;overflow-wrap:anywhere;word-break:break-word;width:auto;min-width:0;padding:8px 16px}.content-container th{text-align:left;color:var(--joh-c-text-2);background-color:var(--joh-c-bg-soft);font-size:14px;font-weight:600}.content-container td{font-size:14px}.content-container hr{border:none;border-top:1px solid var(--joh-c-divider);margin:16px 0}.content-container mark{background:var(--joh-c-mark-bg);padding:1px}.content-container .joh-accordion{border-top:1px solid var(--joh-c-divider);margin:24px 0}.content-container .joh-accordion__item{border-bottom:1px solid var(--joh-c-divider);margin:0}.content-container .joh-accordion__summary{cursor:pointer;color:var(--joh-c-text-1);justify-content:space-between;align-items:center;gap:16px;margin:0;padding:18px 0;font-weight:500;list-style:none;display:flex}.content-container .joh-accordion__summary::-webkit-details-marker{display:none}.content-container .joh-accordion__title{flex:1;min-width:0;line-height:1.6}.content-container .joh-accordion__icon{width:1.125rem;height:1.125rem;color:var(--joh-c-text-2);transition:transform var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);flex:none}.content-container .joh-accordion__item[open] .joh-accordion__icon{color:var(--joh-c-text-1);transform:rotate(180deg)}.content-container .joh-accordion__content{color:var(--joh-c-text-2);padding:0 0 20px}.content-container .joh-accordion__content>:first-child{margin-top:0}.content-container .joh-accordion__content>:last-child{margin-bottom:0}.content-container .joh-accordion__content :-webkit-any(p,ul,ol,blockquote,pre,table){margin-top:12px;margin-bottom:12px}.content-container .joh-accordion__content :is(p,ul,ol,blockquote,pre,table){margin-top:12px;margin-bottom:12px}@media (min-width:720px){.content-container .joh-accordion__summary{padding:20px 0}.content-container .joh-accordion__content{padding-bottom:24px}}.content-container .joh-collapsible{margin:24px 0}.content-container .joh-collapsible__summary{cursor:pointer;color:var(--joh-c-text-1);align-items:flex-start;gap:12px;margin:0;padding:0;font-weight:500;list-style:none;display:flex}.content-container .joh-collapsible__summary::-webkit-details-marker{display:none}.content-container .joh-collapsible__icon{width:1.125rem;height:1.125rem;color:var(--joh-c-text-2);transition:transform var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);flex:none;margin-top:.3rem;transform:rotate(-90deg)}.content-container .joh-collapsible[open] .joh-collapsible__icon{color:var(--joh-c-text-1);transform:rotate(0)}.content-container .joh-collapsible__title{flex:1;min-width:0;line-height:1.75}.content-container .joh-collapsible__title>:first-child,.content-container .joh-collapsible__content>:first-child{margin-top:0}.content-container .joh-collapsible__title>:last-child,.content-container .joh-collapsible__content>:last-child{margin-bottom:0}.content-container .joh-collapsible__content{border-left:1.5px solid var(--joh-c-divider);color:var(--joh-c-text-2);margin-top:12px;margin-left:.5625rem;padding-left:18px}.content-container .joh-collapsible__content :-webkit-any(p,ul,ol,blockquote,pre,table){margin-top:12px;margin-bottom:12px}.content-container .joh-collapsible__content :is(p,ul,ol,blockquote,pre,table){margin-top:12px;margin-bottom:12px}@media (min-width:720px){.content-container .joh-collapsible__content{margin-left:.5625rem;padding-left:20px}}@media print{.content-container .bilibili-desc a{clip:auto;clip-path:none;white-space:normal;width:auto;height:auto;margin:8px 0;display:block;position:static;overflow:visible}}.content-container .bilibili-iframe{border:none;border-radius:8px;max-width:100%;margin:8px 0;display:block}@media print{.content-container .bilibili-iframe{display:none}}}@layer pages{.post>#app>.Layout>.NavBar{margin-block-start:0;margin-block-end:calc(-1 * var(--joh-nav-height))}.post>#app>.Layout>.NavBar:not(.post-hero-passed){background:0 0}.post>#app>.Layout>.NavBar:not(.post-hero-passed) .divider{display:none}.post>#app>.Layout>.NavBar.post-hero-passed{background-color:color-mix(in srgb, transparent, var(--joh-c-bg) var(--post-navbar-background-opacity,100%));-webkit-backdrop-filter:saturate(var(--post-navbar-backdrop-saturation,180%)) blur(var(--post-navbar-backdrop-blur,20px));backdrop-filter:saturate(var(--post-navbar-backdrop-saturation,180%)) blur(var(--post-navbar-backdrop-blur,20px))}.post>#app>.Layout>.NavBar:not(.post-hero-passed):not(.top):not(.open){visibility:hidden;translate:0 var(--navbar-hidden-translate);pointer-events:none}.post>#app>.Layout:has(>.NavBar:not(.post-hero-passed):not(.top):not(.open)){--joh-sticky-nav-offset:0px}.post>#app>.Layout>.NavBar:not(.post-hero-passed):has(+.has-cover):not(.open) .NavBarTitle>.title{color:var(--joh-c-white)}.post>#app>.Layout>.NavBar:not(.post-hero-passed):has(+.has-cover):not(.open) a.NavBarMenuLink.Link{color:var(--joh-c-white)}.post>#app>.Layout>.NavBar:not(.post-hero-passed):has(+.has-cover):not(.open) .NavBarTitle .logo{filter:brightness(0)invert();transition:filter var(--duration-very-slow) var(--ease-out)}.post>#app>.Layout>.NavBar:not(.post-hero-passed):has(+.has-cover):not(.open) .NavBarHamburger .container>span{background-color:var(--joh-c-white)}@media (max-width:719px){.post>#app>.Layout>.NavBar:not(.post-hero-passed):has(+.has-cover):not(.open) .SearchShellIcon{background-color:var(--joh-c-white)!important}}@supports (animation-timeline:view()){@keyframes post-navbar-background{0%{-webkit-backdrop-filter:saturate()blur();backdrop-filter:saturate()blur();background-color:#0000}to{background-color:var(--joh-c-bg);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px)}}.post>#app>.Layout{timeline-scope:--post-hero}.post>#app>.Layout>.Hero{view-timeline:--post-hero block}.post>#app>.Layout>.NavBar{animation:1ms linear both post-navbar-background;animation-timeline:--post-hero;animation-range:exit}}.post .Footer,.docs .Footer,.tags .Footer,.author .Footer{margin-top:2rem}@media (min-width:720px){.post .Footer,.docs .Footer,.tags .Footer,.author .Footer{margin-top:3rem}}}
