.home-main{max-width:1160px;padding:28px 32px 40px}.github-home{--home-card: var(--color-paper);--home-shadow-low: 0 2px 4px color-mix(in srgb, var(--color-text) 7%, transparent), 0 8px 20px color-mix(in srgb, var(--color-text) 4%, transparent);display:grid;grid-template-columns:304px minmax(0,1fr);align-items:start;gap:32px;font-family:var(--font-ui);font-size:.95rem;line-height:1.55}.github-profile{position:relative;isolation:isolate;padding:20px 22px 26px;min-width:0}.github-profile:before{content:"";position:absolute;inset:82px 0 0;z-index:-1;border-radius:24px;background:var(--home-card);box-shadow:var(--home-shadow-low);pointer-events:none}:root[data-theme=dark] .github-home{--home-shadow-low: 0 2px 4px rgb(0 0 0 / .16), 0 8px 20px rgb(0 0 0 / .14)}.hero-avatar-wrap{display:block;aspect-ratio:1;border-radius:50%;height:260px;width:260px;background-color:var(--color-paper);box-shadow:var(--shadow-avatar);overflow:hidden;view-transition-name:site-avatar}.hero-avatar{display:block;border-radius:inherit;width:100%;height:100%;object-fit:cover}.github-profile-name{font-size:1.75rem;font-weight:600;line-height:1.2;margin:26px 0 16px}.github-profile-handle{display:flex;align-items:baseline;gap:.5em;color:var(--color-muted);font-family:var(--font-ui);font-size:1.2rem;font-weight:400;margin-top:5px}.github-profile-login{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.github-profile-separator,.github-profile-pronouns{flex-shrink:0;font-size:.88rem}.github-profile-bio{font-size:1.02rem;margin:0 0 18px;white-space:pre-line;overflow-wrap:anywhere}.github-profile-status{padding:6px 10px;background:var(--color-accent-soft);border-radius:10px;margin:0 0 14px}.github-home a{position:relative;isolation:isolate;color:inherit;text-decoration:none;transition:color .18s ease}.github-home a:not(:has(img)){display:inline-block;max-width:100%}.github-home a:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.github-home [data-tooltip]:after{content:none}.github-followers{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:22px 0;font-size:.88rem;color:var(--color-muted)}.github-followers .material-symbol{font-size:19px}.github-followers strong{color:var(--color-text);font-weight:600}.github-followers a:hover strong,.github-followers a:focus-visible strong{color:inherit}.github-home .github-followers a{display:inline-flex;align-items:center;gap:5px}.github-profile-details{list-style:none;padding:0;margin:0;font-size:.9rem}.github-profile-details li{display:flex;align-items:start;gap:8px;margin:7px 0;overflow-wrap:anywhere}.github-home .github-profile-details a{display:inline-flex;align-items:start;gap:8px;min-width:0}.github-profile-details a>span:last-child{min-width:0}.github-profile-details .material-symbol{color:var(--color-muted);font-size:19px;flex:0 0 19px;margin-top:2px}.github-contact-icon{display:block;width:19px;height:19px;flex:0 0 19px;margin-top:2px;background-color:currentColor;mask-position:center;mask-repeat:no-repeat;mask-size:contain}.github-joined{color:var(--color-muted)}.github-organizations{margin-top:24px}.github-home h2{font-size:1rem;font-weight:500;margin:0 0 14px}.github-organizations>div{display:flex;gap:8px;flex-wrap:wrap}.github-organizations img{display:block;border-radius:6px}.github-overview{min-width:0}.github-badge{border-radius:8px;font-size:.74rem;padding:2px 8px;line-height:1.6;background:color-mix(in srgb,var(--color-muted) 6%,var(--home-card));color:var(--color-muted);font-weight:400;white-space:nowrap}.github-readme{scroll-margin-top:80px}.github-readme-content{font-size:.92rem;min-width:0}.github-readme-content>:first-child{margin-top:0}.github-readme-content>:last-child{margin-bottom:0}.github-readme-content img{max-width:100%;height:auto}.github-home .github-readme-content pre{max-width:100%;overflow:auto;border:0;border-radius:0;padding:0;margin:0;background:transparent;box-shadow:none;font-size:clamp(8px,.7vw,10.5px);line-height:1.35}.github-home .github-readme-content pre code{font-size:inherit}.github-readme-content table{display:block;max-width:100%;overflow-x:auto}.github-home .github-readme-content a{text-decoration-line:underline;transition:color .2s ease,text-decoration-color .2s ease}.github-repositories,.github-contributions{margin-top:32px}.github-repository-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.github-repository{background:var(--home-card);box-shadow:var(--home-shadow-low);border-radius:16px;padding:20px;min-width:0;display:flex;flex-direction:column}.github-repository-heading{display:flex;align-items:center;gap:7px;font-family:var(--font-serif)}.github-repository-heading .material-symbol{font-size:18px;color:var(--color-muted);flex-shrink:0}.github-home .github-repository-heading>a{display:inline-flex;align-items:start;gap:7px;min-width:0;font-weight:600;overflow-wrap:anywhere}.github-repository-heading>a>.material-symbol{margin-top:3px}.github-repository-heading>a>span:last-child{min-width:0}.github-repository-heading>.github-badge{margin-left:auto}.github-repository-description{color:var(--color-muted);font-size:.86rem;line-height:1.5;margin:10px 0 16px}.github-fork{color:var(--color-muted);font-size:.75rem;margin:5px 0 0}.github-topics{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 12px}.github-topics>span{background:color-mix(in srgb,var(--color-muted) 6%,var(--home-card));color:var(--color-muted);border-radius:8px;font-size:.7rem;padding:2px 8px;overflow-wrap:anywhere}.github-repository-meta{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:auto;padding-top:10px;color:var(--color-muted);font-size:.76rem}.github-repository-meta>span,.github-home .github-repository-meta a{display:inline-flex;align-items:center;gap:4px}.github-repository-meta .material-symbol{font-size:16px}.github-language-dot{width:9px;height:9px;border-radius:50%;background:var(--color-accent);display:inline-block;margin-right:3px}.github-contributions{background:var(--home-card);box-shadow:var(--home-shadow-low);border-radius:20px;padding:24px}.github-calendar-scroll{overflow-x:auto}.github-calendar{display:flex;gap:3px;width:100%;min-width:max-content}.github-calendar-week{display:grid;flex:1;min-width:10px;grid-template-rows:repeat(7,auto);gap:3px}.github-calendar-day,.github-calendar-key>i{display:block;width:10px;height:10px;border-radius:2px;background:var(--color-accent-soft)}.github-calendar-day{width:100%;height:auto;aspect-ratio:1}.github-home [data-level="1"]{background:color-mix(in srgb,var(--color-accent) 35%,var(--color-page))}.github-home [data-level="2"]{background:color-mix(in srgb,var(--color-accent) 55%,var(--color-page))}.github-home [data-level="3"]{background:color-mix(in srgb,var(--color-accent) 78%,var(--color-page))}.github-home [data-level="4"]{background:var(--color-accent)}.github-calendar-key{display:flex;gap:4px;align-items:center;justify-content:end;margin-top:10px;font-size:.7rem;color:var(--color-muted)}.github-home-empty{display:block;min-height:50vh;padding-top:8vh}@media(max-width:960px){.home-main{max-width:850px;padding-top:12px}.github-home{grid-template-columns:200px minmax(0,1fr);gap:24px}.github-profile{padding:20px 20px 24px}.github-profile:before{inset-block-start:60px}.hero-avatar-wrap{width:160px;height:160px}.github-repository-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:640px){.home-body .site-header{display:block;padding:8px 20px 0}.home-body .site-header .site-nav{flex-wrap:nowrap;justify-content:flex-start;gap:20px;width:100%;min-height:44px;overflow-x:auto;scrollbar-width:none}.home-body .site-nav>*{flex-shrink:0}.home-main{padding:12px 20px 32px}.github-home{display:block}.github-profile{padding:20px}.github-profile:before{inset-block-start:0;border-radius:20px}.github-profile-identity{display:grid;grid-template-columns:88px minmax(0,1fr);gap:16px;align-items:center}.hero-avatar-wrap{width:88px;height:88px}.github-profile-name{font-size:1.5rem;margin:0}.github-profile-handle{font-size:1.1rem}.github-profile-bio{margin-top:20px}.github-profile-status{margin-top:16px}.github-followers{margin:18px 0}.github-profile-details{display:flex;flex-wrap:wrap;column-gap:18px}.github-profile-details li{max-width:100%}.github-organizations{margin-top:16px}.github-overview{margin-top:24px}.github-repository-grid{gap:12px}.github-repository{padding:18px}.github-contributions{padding:20px 18px}}.markdown{color:var(--color-text);font-family:var(--font-body);font-size:var(--note-text-size);line-height:1.75;overflow-wrap:anywhere;word-wrap:break-word;overflow-x:clip}.markdown>*{margin:0 0 24px}.markdown>*:last-child{margin-bottom:0}.markdown p{color:var(--color-text);font-size:var(--note-text-size);line-height:1.75;margin:0 0 24px;max-width:100%}.markdown h1,.markdown h2,.markdown h3,.markdown h4{color:var(--color-text);font-family:var(--font-serif);font-weight:700;overflow-wrap:anywhere;word-wrap:break-word}.markdown h1 strong,.markdown h2 strong,.markdown h3 strong,.markdown h4 strong{font-weight:900}.markdown h1{font-size:28px;line-height:1.2;margin:50px 0 18px}.markdown h2{font-size:23px;line-height:1.25;margin:46px 0 16px;position:relative}.markdown h3{font-size:19px;font-weight:600;line-height:1.35;margin:34px 0 14px;position:relative}.markdown h4{font-size:16.5px;font-weight:500;line-height:1.4;margin:28px 0 12px}.markdown a{color:var(--color-text);overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--color-text) 35%,transparent);text-decoration-thickness:1px;text-underline-offset:3px;transition:color .2s ease,text-decoration-color .2s ease;word-break:break-word}.markdown a:hover,.markdown a:focus-visible{color:var(--color-hover-text);text-decoration-color:var(--color-hover-text)}.markdown a:focus-visible{border-radius:3px;outline:2px solid var(--color-accent);outline-offset:3px}.markdown strong{color:var(--color-text);font-weight:700}.markdown em{font-style:italic}.markdown del{color:var(--color-muted);text-decoration-color:color-mix(in srgb,var(--color-muted) 65%,transparent)}.markdown ul{list-style:none;margin:0 0 28px;max-width:100%;padding:0}.markdown ul ul,.markdown ul ol,.markdown ol ul,.markdown ol ol{margin:10px 0 4px;max-width:none;padding-left:24px}.markdown ul li{color:var(--color-text);font-size:var(--note-text-size);line-height:1.7;margin-bottom:10px;padding-left:22px;position:relative}.markdown ul li:not(:has(>input[type=checkbox])):before{background:var(--color-accent);border-radius:50%;content:"";height:5px;left:4px;position:absolute;top:.78em;width:5px}.markdown ul ul li{color:var(--color-muted);font-size:14.5px;margin-bottom:6px}.markdown ul ul li:not(:has(>input[type=checkbox])):before{background:transparent;border:1px solid var(--color-accent)}.markdown ol{margin:0 0 28px;max-width:100%;padding-left:22px}.markdown ol li{color:var(--color-text);font-size:var(--note-text-size);line-height:1.7;margin-bottom:10px;padding-left:6px}.markdown ol li::marker{color:var(--color-accent);font-family:var(--font-body);font-size:14px}.markdown li>p{display:inline;margin:0}.markdown li>ul,.markdown li>ol{margin-top:10px}.markdown input[type=checkbox]{accent-color:var(--color-accent);cursor:default;height:.95rem;left:0;margin:0;opacity:1;position:absolute;top:.38em;vertical-align:-.1em;width:.95rem}.markdown li:has(>input[type=checkbox]){list-style:none;padding-left:24px}.markdown blockquote{border-left:2px solid var(--color-accent);color:var(--color-muted);font-size:15px;font-style:italic;line-height:1.65;margin:28px 0;max-width:100%;padding:4px 0 4px 22px}.markdown blockquote p{color:inherit;font-size:inherit;margin:0 0 12px;max-width:none}.markdown blockquote p:last-child{margin-bottom:0}.markdown .callout{--callout-color: var(--color-accent);border-left:4px solid var(--callout-color);color:var(--color-text);margin:28px 0;max-width:100%;padding:2px 16px}.markdown .callout[data-callout=note],.markdown .callout[data-callout=abstract],.markdown .callout[data-callout=info],.markdown .callout[data-callout=todo]{--callout-color: var(--color-accent)}.markdown .callout[data-callout=tip],.markdown .callout[data-callout=success]{--callout-color: #4f6c3f}.markdown .callout[data-callout=important]{--callout-color: #6f5ea8}.markdown .callout[data-callout=warning],.markdown .callout[data-callout=question]{--callout-color: #9a6a21}.markdown .callout[data-callout=caution],.markdown .callout[data-callout=failure],.markdown .callout[data-callout=danger],.markdown .callout[data-callout=bug]{--callout-color: #9b392f}.markdown .callout[data-callout=example],.markdown .callout[data-callout=quote]{--callout-color: var(--color-muted)}:root[data-theme=dark] .markdown .callout[data-callout=tip],:root[data-theme=dark] .markdown .callout[data-callout=success]{--callout-color: #9bb978}:root[data-theme=dark] .markdown .callout[data-callout=important]{--callout-color: #b9a7e8}:root[data-theme=dark] .markdown .callout[data-callout=warning],:root[data-theme=dark] .markdown .callout[data-callout=question]{--callout-color: #d6b56d}:root[data-theme=dark] .markdown .callout[data-callout=caution],:root[data-theme=dark] .markdown .callout[data-callout=failure],:root[data-theme=dark] .markdown .callout[data-callout=danger],:root[data-theme=dark] .markdown .callout[data-callout=bug]{--callout-color: #ee8f7a}.markdown .callout-title{align-items:center;color:var(--callout-color);display:flex;font-size:15px;font-weight:600;line-height:1.35;margin:0 0 12px}.markdown .callout.is-title-only .callout-title{margin-bottom:0}.markdown .callout.is-collapsible .callout-title{cursor:pointer;list-style:none}.markdown .callout.is-collapsible .callout-title::-webkit-details-marker{display:none}.markdown .callout-icon{font-size:1.25em;margin-right:8px;font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.markdown .callout-title-inner{flex:1}.markdown .callout-fold-icon{font-size:1.25em;margin-left:8px;transform:rotate(-90deg);transition:transform .18s var(--ease-out)}.markdown .callout[open]>.callout-title .callout-fold-icon{transform:rotate(0)}.markdown .callout-content>:last-child,.markdown .md-fold-content>:last-child{margin-bottom:0}.markdown .callout p,.markdown .callout ul,.markdown .callout ol,.markdown .md-fold p,.markdown .md-fold ul,.markdown .md-fold ol{max-width:none}.markdown .callout img,.markdown .callout video,.markdown .callout iframe{max-width:100%}.markdown .md-fold{margin:28px 0;max-width:100%}.markdown .md-fold>summary{color:var(--color-text);cursor:pointer;font-weight:700;line-height:1.45;list-style:none;margin-bottom:16px;width:fit-content}.markdown .md-fold>summary::-webkit-details-marker{display:none}.markdown .md-fold>summary:before{border-bottom:6px solid transparent;border-left:10px solid currentColor;border-top:6px solid transparent;content:"";display:inline-block;margin-right:8px;transform:translate(2px,.5px);transition:transform .18s var(--ease-out)}.markdown .md-fold[open]>summary:before{transform:rotate(90deg) translate(.5px,-2px)}.markdown .md-gallery{display:flex;gap:16px;margin:32px 0;max-width:100%;overflow-x:auto;padding:2px 0 12px;scrollbar-color:color-mix(in srgb,var(--color-muted) 42%,transparent) transparent;scrollbar-width:thin}.markdown .md-gallery>figure,.markdown .md-gallery>p{flex:0 0 min(78%,30rem);margin:0;max-width:none}.markdown .md-gallery img{width:100%}.markdown .md-gallery.is-carousel{--gallery-height: clamp(13rem, 38vw, 18rem);--gallery-radius: 24px;display:block;height:var(--gallery-height);padding:0;position:relative;scrollbar-width:none;touch-action:pan-x pan-y pinch-zoom}.markdown .md-gallery.is-carousel::-webkit-scrollbar{display:none}.markdown .md-gallery.is-carousel:focus-visible{border-radius:var(--gallery-radius);outline:2px solid var(--color-accent);outline-offset:5px}.markdown .md-carousel-track{height:100%}.markdown .md-carousel-stage{height:100%;left:0;overflow:hidden;position:sticky}.markdown .md-carousel-item{background:var(--color-paper);border-radius:var(--gallery-radius);height:100%;left:0;margin:0;max-width:none;overflow:hidden;position:absolute;top:0}.markdown .md-carousel-item img{border:0;height:100%;left:50%;max-width:none;object-fit:cover;position:absolute;top:0;transform:translate(-50%);width:var(--gallery-image-width)}.markdown .md-carousel-item:has(:focus-visible){outline:2px solid var(--color-accent);outline-offset:-3px}.markdown .md-carousel-item figcaption,.memos-page .memo-photo-tile figcaption{background:linear-gradient(transparent,#000000b3);bottom:0;box-sizing:border-box;color:#fff;display:-webkit-box;font-family:var(--font-ui);font-size:.9rem;left:0;line-height:1.4;margin:0;opacity:var(--gallery-caption-opacity, 1);overflow:hidden;padding:36px 16px 16px;pointer-events:none;position:absolute;right:0;text-align:left;-webkit-box-orient:vertical;-webkit-line-clamp:2}.markdown .md-gallery.is-dragging,.markdown .md-gallery.is-dragging img{cursor:grabbing;user-select:none}.markdown .mermaid-block{background:color-mix(in srgb,var(--color-paper) 72%,transparent);border:0;border-radius:6px;margin:32px 0;max-width:100%;overflow-x:auto;padding:16px;scrollbar-color:color-mix(in srgb,var(--color-muted) 42%,transparent) transparent;scrollbar-width:thin;transition:background-color .35s ease}.markdown .mermaid-source{background:var(--color-code-bg);border:0;border-radius:4px;color:var(--syntax-text);margin:0;max-width:none;overflow-x:auto;padding:14px 16px;white-space:pre}.markdown .mermaid-source code{white-space:pre}.markdown .mermaid-diagram{color:var(--color-text);min-width:100%}.markdown .mermaid-diagram svg{display:block;height:auto;margin:0 auto;max-width:none}.markdown .mermaid-block.is-rendered .mermaid-source{display:none}.markdown .mermaid-error{color:#9b392f;font-size:.92rem;margin:12px 0 0;max-width:none}:root[data-theme=dark] .markdown .mermaid-error{color:#ee8f7a}.markdown .embed-card{background:color-mix(in srgb,var(--color-paper) 72%,transparent);border:0;border-radius:6px;color:var(--color-text);margin:28px 0;max-width:100%;min-width:0;overflow:hidden;transition:background-color .18s ease,color .18s ease}.markdown a.embed-card{display:block;padding:16px 18px;text-decoration:none}.markdown a.embed-card:hover,.markdown a.embed-card:focus-visible{background:color-mix(in srgb,var(--color-accent) 8%,var(--color-paper));color:var(--color-hover-text)}.markdown .embed-kicker,.markdown .embed-meta,.markdown .embed-action{color:var(--color-muted);display:block;font-size:12px;line-height:1.35}.markdown .embed-title{color:var(--color-text);display:block;font-size:16px;font-weight:700;line-height:1.45;margin:6px 0;overflow-wrap:anywhere}.markdown .embed-slash{color:var(--color-muted);margin:0 3px}.markdown .embed-action{margin-top:10px}.markdown .embed-frame{max-width:100%}.markdown .embed-frame iframe{background:var(--color-paper);border:0;display:block;max-width:100%;width:100%}.markdown .embed-frame-video{aspect-ratio:16 / 9}.markdown .embed-frame-video iframe{height:100%}.markdown .embed-frame-codepen iframe{min-height:360px}.markdown table{border-collapse:collapse;display:block;font-family:var(--font-body);font-size:14px;margin:28px 0;max-width:100%;overflow-x:auto;width:100%}.markdown th,.markdown td{border-bottom:1px solid var(--color-line);padding:8px 12px;text-align:left;vertical-align:top}.markdown th{color:var(--color-text);font-weight:700}.markdown td{color:var(--color-muted)}.markdown :not(pre)>code{background:var(--color-code-inline-bg);border:0;border-radius:3px;color:var(--color-muted);font-family:var(--font-mono);font-variant-ligatures:contextual common-ligatures;font-feature-settings:"liga" 1,"calt" 1;font-size:.9em;padding:1px 6px;transition:background-color .35s ease}:root[data-palette=warm] .markdown :not(pre)>code{background:var(--color-paper);color:var(--color-muted)}.markdown pre{background:var(--color-code-bg);border:0;border-radius:4px;box-shadow:none;color:var(--syntax-text);font-family:var(--font-mono);font-variant-ligatures:contextual common-ligatures;font-feature-settings:"liga" 1,"calt" 1;font-size:14px;line-height:1.7;margin:28px 0;max-width:100%;overflow-x:auto;padding:16px;transition:background-color .35s ease}.markdown pre code{background:transparent;border:0;border-radius:0;color:inherit;display:block;font-family:inherit;font-size:inherit;padding:0}.markdown hr{background:var(--color-line);border:0;height:1px;margin:40px 0}.markdown figure{margin:36px 0;padding:0}.markdown iframe,.markdown object,.markdown embed,.markdown audio{border:0}.markdown img,.markdown video{background:var(--color-paper);border:0;display:block;height:auto;max-width:100%}.markdown.post-content img{cursor:zoom-in}.markdown.post-content img.no-lightbox,.markdown.post-content img[data-no-lightbox=true]{cursor:auto}.markdown figcaption{color:color-mix(in srgb,var(--color-text) 72%,transparent);font-size:14px;line-height:1.5;margin-top:10px;text-align:center}.markdown .footnotes{border-top:1px solid var(--color-line);color:var(--color-muted);font-size:.9rem;margin-top:3rem;padding-top:1rem}.markdown .footnotes hr{display:none}.markdown .footnotes ol{margin-bottom:0}.markdown .footnotes li,.markdown .footnotes p{color:var(--color-muted);font-size:.9rem}.markdown .footnote-ref,.markdown .footnote-backref{color:var(--color-accent);text-decoration:none}.markdown .highlight,.markdown .chroma{background:var(--color-code-bg);color:var(--syntax-text)}.markdown .highlight{border:0;border-radius:4px;box-shadow:none;margin:28px 0;max-width:100%;overflow-x:auto;position:relative;transition:background-color .35s ease}.markdown .highlight pre{background:transparent;border:0;border-radius:0;box-shadow:none;margin:0;padding-right:3.5rem}.markdown pre.chroma{border:0;margin:0}.markdown .highlight.is-plain pre{color:var(--syntax-text)}.code-copy-button{align-items:center;background:transparent;border:0;border-radius:4px;color:var(--color-muted);cursor:pointer;display:inline-flex;height:2rem;justify-content:center;padding:0;position:absolute;right:.7rem;top:.7rem;opacity:0;pointer-events:none;transition:color .2s ease,opacity .2s ease;width:2rem;z-index:1}.markdown .highlight:hover .code-copy-button,.markdown .highlight:focus-within .code-copy-button,.code-copy-button.is-copied{opacity:1;pointer-events:auto}.code-copy-button .material-symbol{font-size:1.15rem;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;transition:font-variation-settings .16s var(--ease-out)}.code-copy-button:hover,.code-copy-button:focus-visible,.code-copy-button.is-copied{color:var(--color-hover-text)}.code-copy-button:hover .material-symbol,.code-copy-button:focus-visible .material-symbol,.code-copy-button.is-copied .material-symbol{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.code-copy-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.markdown h1,.markdown h2,.markdown h3,.markdown h4{scroll-margin-block-start:90px}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.markdown .heading-anchor{display:inline-flex;align-items:center;color:var(--color-hover-text);opacity:0;text-decoration:none;margin-left:.25em;font-size:.85em;transition:opacity .18s ease,color .18s ease;vertical-align:baseline;position:relative;top:.15em}.markdown .heading-anchor .material-symbol{font-size:inherit}.markdown h1:hover .heading-anchor,.markdown h2:hover .heading-anchor,.markdown h3:hover .heading-anchor,.markdown h4:hover .heading-anchor,.markdown .heading-anchor:focus-visible{opacity:1}.markdown .heading-anchor:hover{color:var(--color-primary)}.markdown-image{margin:32px 0}.markdown-image-center{text-align:center}.markdown-image-center img{margin-left:auto;margin-right:auto}@media(hover:none){.markdown .heading-anchor{opacity:.45}}@media(max-width:720px){.markdown p,.markdown ul li,.markdown ol li{font-size:15px;line-height:1.72}.markdown h1{font-size:25px;margin:44px 0 16px}.markdown h2{font-size:21px;margin:38px 0 14px}.markdown h3{font-size:18px;margin:28px 0 12px}.markdown figure{margin:28px 0}}@media(max-width:420px){.markdown p,.markdown ul li,.markdown ol li{font-size:15px;line-height:1.7}.markdown h1{font-size:23px;margin:36px 0 14px}.markdown h2{font-size:19.5px;margin:32px 0 12px}.markdown h3{font-size:17px;margin:24px 0 10px}.markdown ul{padding-left:0}.markdown ul ul,.markdown ul ol,.markdown ol ul,.markdown ol ol{padding-left:20px}.markdown ul li{padding-left:18px}.markdown blockquote{font-size:15px;padding-left:16px}.markdown figcaption{font-size:13.5px}}.markdown .heading-anchor:focus-visible{border-radius:3px;outline:2px solid var(--color-accent);outline-offset:3px}.markdown .chroma .line{display:block;min-height:1.7em}.markdown .chroma .cl{display:inline}.markdown .chroma .w{color:inherit}.markdown .chroma .c,.markdown .chroma .ch,.markdown .chroma .cm,.markdown .chroma .c1,.markdown .chroma .cs,.markdown .chroma .cp,.markdown .chroma .cpf{color:var(--syntax-comment);font-style:italic}:root[data-palette=default] .markdown .chroma .c,:root[data-palette=default] .markdown .chroma .ch,:root[data-palette=default] .markdown .chroma .cm,:root[data-palette=default] .markdown .chroma .c1,:root[data-palette=default] .markdown .chroma .cs,:root[data-palette=default] .markdown .chroma .cp,:root[data-palette=default] .markdown .chroma .cpf{font-style:normal}.markdown .chroma .k,.markdown .chroma .kc,.markdown .chroma .kd,.markdown .chroma .kn,.markdown .chroma .kp,.markdown .chroma .kr,.markdown .chroma .kt{color:var(--syntax-keyword)}.markdown .chroma .s,.markdown .chroma .sa,.markdown .chroma .sb,.markdown .chroma .sc,.markdown .chroma .dl,.markdown .chroma .sd,.markdown .chroma .s2,.markdown .chroma .se,.markdown .chroma .sh,.markdown .chroma .si,.markdown .chroma .sx,.markdown .chroma .sr,.markdown .chroma .s1,.markdown .chroma .ss{color:var(--syntax-string)}.markdown .chroma .m,.markdown .chroma .mb,.markdown .chroma .mf,.markdown .chroma .mh,.markdown .chroma .mi,.markdown .chroma .il,.markdown .chroma .mo{color:var(--syntax-number)}.markdown .chroma .nf,.markdown .chroma .nb,.markdown .chroma .nx,.markdown .chroma .nc,.markdown .chroma .nd,.markdown .chroma .ne{color:var(--syntax-function)}.markdown .chroma .nt{color:var(--syntax-tag)}.markdown .chroma .na{color:var(--syntax-attr)}.markdown .chroma .o,.markdown .chroma .ow,.markdown .chroma .p{color:var(--syntax-operator)}.markdown .chroma .err{color:var(--syntax-error)}.markdown .chroma .gi{color:var(--syntax-inserted)}.markdown .chroma .gd{color:var(--syntax-deleted)}.markdown .gc-container{margin:1.5rem 0;display:block;overflow-x:auto;border-radius:6px;background:color-mix(in srgb,var(--color-text) 5%,transparent);padding:1rem 1.25rem;transition:background-color .2s ease-out,color .2s ease-out;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--color-text) 15%,transparent) transparent;text-decoration:none;color:var(--color-text)}.markdown .gc-container:hover,.markdown .gc-container:focus-visible{background:color-mix(in srgb,var(--color-text) 10%,transparent)}.markdown .gc-container+.gc-container{margin-top:-.5rem}.markdown .gc-title-bar{display:flex;align-items:center;gap:.625rem}.markdown .gc-owner-avatar{aspect-ratio:1/1;width:1.375rem;flex-shrink:0;border-radius:9999px;background-color:color-mix(in srgb,var(--color-text) 20%,transparent)}.markdown .gc-repo-title{display:flex;align-items:center;line-height:normal;color:currentColor}.markdown .gc-repo-title strong{color:inherit}.markdown .gc-slash{margin:0 .25rem;opacity:.4}.markdown .gc-github-icon{margin-left:auto;width:1.375rem;flex-shrink:0}.markdown .gc-repo-description{margin:.6rem 0 .875rem;text-align:start;font-size:.875rem;color:currentColor}.markdown .gc-info-bar{display:flex;align-items:center;gap:.4375rem;font-size:.75rem;color:color-mix(in srgb,currentColor 80%,transparent)}.markdown .gc-info-icon{flex-shrink:0}.markdown .gc-stars-count{margin-right:.75rem}.markdown .gc-forks-count{margin-right:.9375rem}.markdown .gc-license-info{margin-left:.125rem;margin-right:1rem}.markdown .spotify-embed{width:100%;border-radius:12px;overflow:hidden;border:0;margin:0;display:block}.markdown .music-custom-player{margin:32px 0}.music-player{position:relative;border-radius:16px;overflow:hidden;height:160px;display:flex;align-items:center;background:var(--color-surface);box-shadow:0 4px 12px #0000001a;color:#fff;font-family:var(--font-ui)}.music-bg{position:absolute;inset:-20px;background-size:cover;background-position:center;filter:blur(20px) brightness(.7);z-index:0}.music-overlay{position:absolute;inset:0;background:#0000004d;z-index:1}.music-inner{position:relative;z-index:2;display:flex;align-items:center;width:100%;height:100%;padding:16px;box-sizing:border-box}.music-player .music-cover{width:128px;height:128px;border-radius:8px;object-fit:cover;flex-shrink:0;margin-right:16px;margin-bottom:0!important;border:none;box-shadow:0 12px 32px #0006}.music-body{flex:1;display:flex;flex-direction:column;justify-content:center;min-width:0}.music-text{display:flex;align-items:baseline;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.music-title{font-family:var(--font-serif);font-size:16px;font-weight:600;margin-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-artist{font-size:13px;color:#fffc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-time{font-size:12px;color:#fffc;margin-bottom:6px}.music-bottom{display:flex;align-items:center;justify-content:flex-start}.music-canvas{flex:1;max-width:360px;height:24px;cursor:pointer;touch-action:none}.music-playbtn-wrapper{width:72px;height:72px;display:flex;align-items:center;justify-content:center;margin-left:auto}.music-playbtn{width:45px;height:45px;border-radius:22.5px;background:#fff3;border:none;color:#fffc;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .35s cubic-bezier(.42,1.67,.21,.9);flex-shrink:0;padding:0}.music-player.is-playing .music-playbtn{width:45px;height:45px;border-radius:18px;background:#fff;color:#000}.music-playbtn:active{width:50px!important;height:50px!important;border-radius:18px!important;transform:none}.music-icon{font-family:Material Symbols Rounded;font-variation-settings:"FILL" 1;font-size:24px;color:inherit}.music-error{padding:16px;background:var(--color-surface);border-radius:12px;color:var(--color-text-subdued);text-align:center;border:0}@media(max-width:960px){.music-player{height:auto;width:100%;max-width:100%;box-sizing:border-box;border-radius:20px}.music-inner{flex-direction:column;align-items:center;padding:20px 18px;gap:10px}.music-player .music-cover{width:min(68vw,220px);height:min(68vw,220px);margin-right:0;margin-bottom:0!important}.music-body{width:100%;align-items:center;flex:none}.music-text{flex-direction:column;align-items:center;width:100%;white-space:normal}.music-title{margin-right:0;margin-bottom:4px;text-align:center;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:700}.music-artist{text-align:center;width:100%}.music-time{text-align:center;margin-bottom:16px}.music-bottom{flex-direction:column;align-items:center;width:100%}.music-canvas{width:min(100%,260px);max-width:100%;flex:none}.music-playbtn-wrapper{margin-left:0;margin-top:16px;width:56px;height:56px}.music-playbtn{width:52px;height:52px;border-radius:26px}.music-player.is-playing .music-playbtn{width:52px;height:52px;border-radius:20px}.music-icon{font-size:28px}}@media(max-width:380px){.music-player{border-radius:16px}.music-inner{padding:16px}.music-player .music-cover{width:190px;height:190px}.music-canvas{width:230px}.music-playbtn-wrapper,.music-playbtn,.music-player.is-playing .music-playbtn{width:48px;height:48px}}.markdown figure:has(.spotify-embed),.markdown figure:has(.music-custom-player),.markdown figure:has(.twitter-tweet){margin:32px 0}.markdown .twitter-tweet{margin:0 auto}.markdown blockquote.twitter-tweet{border-left:none;padding:0;background:transparent;margin:0 auto}.markdown .twitter-tweet iframe,.markdown iframe[data-tweet-id]{border-radius:12px!important;overflow:hidden!important}.markdown .katex-display{overflow-x:auto;overflow-y:hidden;padding:.5rem 0;margin:1.25rem 0}.markdown .katex-display>.katex{max-width:100%}.markdown .katex{font-size:1.05em}.markdown .katex-display::-webkit-scrollbar{display:none}.markdown .obsidian-embed{margin:32px 0;max-width:100%}.markdown .media-image img{border-radius:4px;width:var(--image-width, auto);max-width:100%;height:auto}.markdown .media-image.is-center{text-align:center}.markdown .media-image.is-center img{margin-left:auto;margin-right:auto}.markdown .media-image.is-left{text-align:left}.markdown .media-image.is-left img{margin-right:auto}.markdown .media-image.is-right{text-align:right}.markdown .media-image.is-right img{margin-left:auto}.markdown .media-pdf{display:flex;flex-direction:column;gap:8px}.markdown .media-pdf iframe{width:100%;height:600px;border:0;border-radius:6px;background:var(--color-paper)}@media(max-width:960px){.markdown .media-pdf iframe{height:400px}}.markdown .media-audio,.markdown .media-video{display:flex;flex-direction:column;gap:8px;margin:24px 0}.markdown .media-audio audio{width:100%;border:0;border-radius:6px;background:var(--color-paper)}.markdown .media-video video{max-width:100%;border:0;border-radius:6px;background:var(--color-paper)}.markdown .media-audio.is-center,.markdown .media-video.is-center{align-items:center}.markdown .obsidian-note-embed{border-left:2px solid var(--color-accent);color:var(--color-muted);font-style:normal;font-size:15px;line-height:1.65;margin:28px 0;max-width:100%;padding:4px 32px 4px 22px;position:relative}.markdown blockquote.obsidian-note-embed{border-left-color:var(--color-accent)}.markdown .obsidian-embed-content{color:var(--color-text);font-size:15px;line-height:1.6}.markdown .obsidian-embed-content>*:first-child{margin-top:0}.markdown .obsidian-embed-title{font-size:1.15rem;font-weight:700;margin-bottom:.5rem;color:var(--color-text)}.markdown .obsidian-embed-link{position:absolute;top:4px;right:0;color:var(--color-muted);opacity:.6;text-decoration:none;display:flex;align-items:center;justify-content:center;transition:color .2s ease,opacity .2s ease}.markdown .obsidian-embed-link:after{background:var(--color-tooltip-bg);border-radius:8px;top:calc(100% + 9px);color:var(--color-tooltip-text);content:attr(data-tooltip);font-family:var(--font-ui);font-size:.72rem;left:50%;line-height:1;opacity:0;padding:5px 10px;pointer-events:none;position:absolute;transform:translate(-50%);clip-path:inset(100% 50% 0 50% round 8px);transition:opacity var(--motion-expressive-effects-duration) var(--motion-expressive-effects-easing),clip-path var(--motion-expressive-effects-duration) var(--motion-expressive-effects-easing);white-space:nowrap;z-index:100}.markdown .obsidian-embed-link:hover,.markdown .obsidian-embed-link:focus-visible{color:var(--color-hover-text);opacity:1;text-decoration:none}.markdown .obsidian-embed-link:hover:after,.markdown .obsidian-embed-link:focus-visible:after{opacity:1;clip-path:inset(0 0 0 0 round 8px)}@media(prefers-reduced-motion:reduce){.markdown .obsidian-embed-link:after{clip-path:none!important;transition:opacity .16s ease!important}}html[data-reduced-motion=true] .markdown .obsidian-embed-link:after{clip-path:none!important;transition:opacity .16s ease!important}.markdown .obsidian-embed-link .material-symbol{font-size:1.15rem;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.markdown mark,.note-content mark{background:var(--color-accent-soft-strong);color:inherit;border-radius:.2em;padding:.05em .18em}.embed-skeleton{position:relative;overflow:hidden;background-color:var(--color-paper);border:0;border-radius:8px;color:transparent!important;pointer-events:none;user-select:none}.embed-skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--color-text) 3%,transparent) 40%,color-mix(in srgb,var(--color-text) 5%,transparent) 50%,color-mix(in srgb,var(--color-text) 3%,transparent) 60%,transparent 100%);transform:translate(-100%);animation:embed-shimmer 2s infinite var(--ease-out)}@media(prefers-reduced-motion:reduce){.embed-skeleton:after{animation:none;transform:translate(0);background:color-mix(in srgb,var(--color-text) 2%,transparent)}}@keyframes embed-shimmer{to{transform:translate(100%)}}.embed-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;background-color:var(--color-paper);border:0;border-radius:8px;text-align:center;color:var(--color-muted);font-family:var(--font-ui);font-size:.9rem;min-height:120px;gap:.5rem}.embed-fallback svg{color:var(--color-faint);margin-bottom:.25rem}.embed-fallback a{color:var(--color-accent);text-decoration:none;transition:opacity var(--duration-fast) var(--ease-out)}.embed-fallback a:hover{opacity:.8}.music-custom-player[data-embed-status=loading]{margin:32px 0}.music-skeleton{display:flex;background:var(--color-paper);border:0;border-radius:16px;overflow:hidden;height:160px;box-shadow:0 4px 12px #00000008;padding:16px;align-items:center;box-sizing:border-box}.music-skeleton-cover{width:128px;height:128px;flex-shrink:0;border-radius:8px;background:color-mix(in srgb,var(--color-text) 5%,transparent);margin-right:16px}.music-skeleton-body{flex-grow:1;display:flex;flex-direction:column;justify-content:center;padding:0;gap:.5rem}.music-skeleton-title{width:40%;height:1rem;background:color-mix(in srgb,var(--color-text) 8%,transparent);border-radius:4px}.music-skeleton-artist{width:25%;height:.75rem;background:color-mix(in srgb,var(--color-text) 5%,transparent);border-radius:4px;margin-bottom:.25rem}.music-skeleton-progress{width:100%;height:4px;background:color-mix(in srgb,var(--color-text) 3%,transparent);border-radius:2px}.music-skeleton-playbtn{width:45px;height:45px;border-radius:50%;background:color-mix(in srgb,var(--color-text) 5%,transparent);align-self:center;margin-left:auto;margin-right:14px}@media screen and (max-width:960px){.music-skeleton{flex-direction:column;height:auto;padding:20px 18px;border-radius:20px;align-items:center;text-align:center;gap:10px}.music-skeleton-cover{width:min(68vw,220px);height:min(68vw,220px);margin-right:0}.music-skeleton-body{width:100%;padding:0;align-items:center}.music-skeleton-title{width:60%}.music-skeleton-artist{width:40%}.music-skeleton-playbtn{margin:10px 0 0;width:45px;height:45px}}.gc-container[data-embed-status=loading]{position:relative;overflow:hidden}.gc-container[data-embed-status=loading]:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--color-text) 3%,transparent) 40%,color-mix(in srgb,var(--color-text) 5%,transparent) 50%,color-mix(in srgb,var(--color-text) 3%,transparent) 60%,transparent 100%);transform:translate(-100%);animation:embed-shimmer 2s infinite var(--ease-out);pointer-events:none;z-index:1}@media(prefers-reduced-motion:reduce){.gc-container[data-embed-status=loading]:after{animation:none;transform:translate(0);background:color-mix(in srgb,var(--color-text) 2%,transparent)}}.gc-container[data-embed-status=loading] .gc-repo-description,.gc-container[data-embed-status=loading] .gc-stars-count,.gc-container[data-embed-status=loading] .gc-forks-count,.gc-container[data-embed-status=loading] .gc-license-info{color:transparent!important;background:color-mix(in srgb,var(--color-text) 6%,transparent);border-radius:4px}.gc-container[data-embed-status=loading] .gc-repo-description{width:80%;height:.875rem;margin:.6rem 0 .875rem;display:block}.gc-container[data-embed-status=loading] .gc-stars-count,.gc-container[data-embed-status=loading] .gc-forks-count,.gc-container[data-embed-status=loading] .gc-license-info{display:inline-block;min-width:2rem;height:.75rem;vertical-align:middle}.tweet-skeleton{min-height:200px;display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.tweet-skeleton-header{display:flex;gap:.75rem;align-items:center}.tweet-skeleton-avatar{width:48px;height:48px;border-radius:50%;background:color-mix(in srgb,var(--color-text) 6%,transparent)}.tweet-skeleton-name{width:120px;height:1rem;background:color-mix(in srgb,var(--color-text) 6%,transparent);border-radius:4px}.tweet-skeleton-body1,.tweet-skeleton-body2{height:1rem;background:color-mix(in srgb,var(--color-text) 4%,transparent);border-radius:4px}.tweet-skeleton-body1{width:90%}.tweet-skeleton-body2{width:60%}.embed-frame[data-embed-status=loading]{position:relative;background-color:var(--color-paper)}.embed-frame[data-embed-status=loading]:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--color-text) 3%,transparent) 40%,color-mix(in srgb,var(--color-text) 5%,transparent) 50%,color-mix(in srgb,var(--color-text) 3%,transparent) 60%,transparent 100%);transform:translate(-100%);animation:embed-shimmer 2s infinite var(--ease-out);pointer-events:none;z-index:1}@media(prefers-reduced-motion:reduce){.embed-frame[data-embed-status=loading]:after{animation:none;transform:translate(0);background:color-mix(in srgb,var(--color-text) 2%,transparent)}}.embed-frame[data-embed-status=loading] iframe{opacity:0}.embed-frame[data-embed-status=ready] iframe{opacity:1;transition:opacity var(--duration-normal) var(--ease-out)}img[data-embed-status=loading]{background-color:color-mix(in srgb,var(--color-text) 3%,transparent);opacity:0}img[data-embed-status=ready]{opacity:1;transition:opacity var(--duration-normal) var(--ease-out)}::view-transition{background:var(--color-page)}::view-transition-group(site-avatar),::view-transition-group(site-name-cn),::view-transition-group(site-name-en){animation-duration:var(--duration-shared);animation-timing-function:var(--ease-out)}::view-transition-old(site-name-cn),::view-transition-old(site-name-en){animation:none;opacity:0}::view-transition-new(site-name-cn),::view-transition-new(site-name-en){animation:none;mix-blend-mode:normal}:root{--theme-reveal-from: 100% 0 0 0;--palette-reveal-from: 0 100% 0 0}:root[data-theme=dark]{--theme-reveal-from: 0 0 100% 0}html[data-palette-changing=to-warm]{--palette-reveal-from: 0 100% 0 0}html[data-palette-changing=from-warm]{--palette-reveal-from: 0 0 0 100%}html[data-theme-changing] .hero-avatar-wrap,html[data-palette-changing] .hero-avatar-wrap,html[data-theme-changing] .side-avatar-wrap,html[data-palette-changing] .side-avatar-wrap,html[data-theme-changing] .hero-name,html[data-theme-changing] .slogan-glyph,html[data-palette-changing] .hero-name,html[data-palette-changing] .slogan-glyph,html[data-theme-changing] .notes-brand-name,html[data-palette-changing] .notes-brand-name,html[data-theme-changing] .notes-item-title a,html[data-palette-changing] .notes-item-title a,html[data-theme-changing] .notes-item-meta,html[data-palette-changing] .notes-item-meta,html[data-theme-changing] .note-title span,html[data-palette-changing] .note-title span,html[data-theme-changing] .note-meta,html[data-palette-changing] .note-meta{view-transition-name:none!important}::view-transition-old(theme-toggle-transition),::view-transition-old(palette-toggle-transition){animation:none;mix-blend-mode:normal;z-index:-1}::view-transition-new(theme-toggle-transition){animation:theme-toggle-reveal .7s cubic-bezier(.4,0,.2,1);clip-path:inset(0 0 0 0);mix-blend-mode:normal;z-index:99}::view-transition-new(palette-toggle-transition){animation:palette-toggle-reveal .7s cubic-bezier(.4,0,.2,1);clip-path:inset(0 0 0 0);mix-blend-mode:normal;z-index:99}::view-transition-group(active-switch-track),::view-transition-group(active-switch-thumb){z-index:100}@keyframes theme-toggle-reveal{0%{clip-path:inset(var(--theme-reveal-from))}}@keyframes palette-toggle-reveal{0%{clip-path:inset(var(--palette-reveal-from))}}::view-transition-old(root),::view-transition-new(root){animation-duration:var(--duration-normal);animation-timing-function:var(--ease-out);background:var(--color-page);mix-blend-mode:normal}html.article-transition::view-transition-group(*){animation-duration:var(--duration-shared);animation-timing-function:var(--article-enter-ease)}html.article-transition::view-transition-old(root){animation:none;opacity:0}html.article-transition::view-transition-new(root){animation:none;opacity:1}html.article-transition .side-avatar-wrap,html.article-transition .hero-avatar-wrap,html.article-transition .hero-name-cn,html.article-transition .hero-name-en,html.article-transition .notes-brand-cn,html.article-transition .notes-brand-en,html.article-transition .slogan-glyph{view-transition-name:none}@keyframes nav-exit-up{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-14px)}}@keyframes nav-enter-down{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}@keyframes logo-exit-fade{0%{opacity:1}to{opacity:0}}@keyframes logo-enter-fade{0%{opacity:0}to{opacity:1}}@keyframes social-exit-down{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(14px)}}@keyframes social-enter-up{0%{opacity:0;transform:translateY(14px)}to{opacity:.72;transform:translateY(0)}}@keyframes footer-exit-down{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}@keyframes footer-enter-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes side-nav-enter{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes side-nav-exit-left{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-16px)}}@keyframes aside-enter{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes aside-exit-right{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(18px)}}@keyframes page-soft-enter{0%{opacity:.92}to{opacity:1}}@keyframes article-content-enter{0%{opacity:0;transform:translateY(var(--post-enter-y))}to{opacity:1;transform:translateY(0)}}@keyframes article-content-enter-mini{0%{opacity:0;transform:translateY(1.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes article-back-enter{0%{opacity:0;transform:translate(.5rem)}to{opacity:1;transform:translate(0)}}@keyframes archive-intro-fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.home-exiting .site-nav>*{animation:nav-exit-up var(--duration-normal) var(--ease-out) both}.home-exiting .site-nav>*:nth-child(1){animation-delay:0ms}.home-exiting .site-nav>*:nth-child(2){animation-delay:28ms}.home-exiting .site-nav>*:nth-child(3){animation-delay:56ms}.home-exiting .site-nav>*:nth-child(4){animation-delay:84ms}.home-exiting .site-nav>*:nth-child(5){animation-delay:112ms}.home-exiting .site-nav>*:nth-child(6){animation-delay:.14s}.home-exiting .site-nav>*:nth-child(7){animation-delay:.16s}.home-exiting .site-nav>*:nth-child(8){animation-delay:.18s}.home-exiting .hero-social a{animation:social-exit-down var(--duration-normal) var(--ease-out) both}.home-exiting .hero-social a:nth-child(1){animation-delay:40ms}.home-exiting .hero-social a:nth-child(2){animation-delay:68ms}.home-exiting .hero-social a:nth-child(3){animation-delay:96ms}.home-exiting .hero-social a:nth-child(4){animation-delay:124ms}.home-exiting .hero-social a:nth-child(5){animation-delay:152ms}.home-exiting .hero-social a:nth-child(6){animation-delay:.18s}.home-exiting .footer-stats-row>*,.home-exiting .home-footer>p.footer-copyright{animation:footer-exit-down var(--duration-normal) var(--ease-out) both}.home-exiting .footer-stats-row>*:nth-child(1){animation-delay:.12s}.home-exiting .footer-stats-row>*:nth-child(2){animation-delay:148ms}.home-exiting .footer-stats-row>*:nth-child(3){animation-delay:176ms}.home-exiting .footer-stats-row>*:nth-child(4){animation-delay:204ms}.home-exiting .home-footer>p.footer-copyright{animation-delay:232ms}.home-entering .site-nav>*{animation:nav-enter-down var(--duration-normal) var(--ease-out) both}.home-entering .site-nav>*:nth-child(1){animation-delay:90ms}.home-entering .site-nav>*:nth-child(2){animation-delay:118ms}.home-entering .site-nav>*:nth-child(3){animation-delay:146ms}.home-entering .site-nav>*:nth-child(4){animation-delay:174ms}.home-entering .site-nav>*:nth-child(5){animation-delay:202ms}.home-entering .site-nav>*:nth-child(6){animation-delay:.23s}.home-entering .site-nav>*:nth-child(7){animation-delay:.26s}.home-entering .site-nav>*:nth-child(8){animation-delay:.29s}.home-entering .hero-social a{animation:social-enter-up var(--duration-normal) var(--ease-out) both}.home-entering .hero-social a:nth-child(1){animation-delay:.15s}.home-entering .hero-social a:nth-child(2){animation-delay:178ms}.home-entering .hero-social a:nth-child(3){animation-delay:206ms}.home-entering .hero-social a:nth-child(4){animation-delay:234ms}.home-entering .hero-social a:nth-child(5){animation-delay:262ms}.home-entering .hero-social a:nth-child(6){animation-delay:.29s}.home-entering .footer-stats-row>*,.home-entering .home-footer>p.footer-copyright{animation:footer-enter-up var(--duration-normal) var(--ease-out) both}.home-entering .home-footer>p.footer-copyright{animation-delay:.21s}.home-entering .footer-stats-row>*:nth-child(4){animation-delay:238ms}.home-entering .footer-stats-row>*:nth-child(3){animation-delay:266ms}.home-entering .footer-stats-row>*:nth-child(2){animation-delay:294ms}.home-entering .footer-stats-row>*:nth-child(1){animation-delay:322ms}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link{animation:side-nav-exit-left var(--duration-normal) var(--ease-out) both}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link:nth-child(1){animation-delay:0ms}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link:nth-child(2){animation-delay:28ms}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link:nth-child(3){animation-delay:56ms}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link:nth-child(4){animation-delay:84ms}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link:nth-child(5){animation-delay:112ms}html:not(.article-transition) body.page-exiting .side-nav:not(.transition-stable) .nav-link:nth-child(6){animation-delay:.14s}html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button,html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer-links,html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer>p{animation:aside-exit-right var(--duration-normal) var(--ease-out) both}html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button:nth-child(1){animation-delay:40ms}html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button:nth-child(2){animation-delay:68ms}html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button:nth-child(3){animation-delay:96ms}html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer-links{animation-delay:124ms}html:not(.article-transition) body.page-exiting .notes-aside:not(.transition-stable) .notes-footer>p{animation-delay:152ms}html.article-transition .persistent-logo,html.article-transition .side-rail,html.article-transition .notes-page,html.article-transition .side-nav,html.article-transition .side-nav:not(.transition-stable) .nav-link,html.article-transition .side-avatar-link,html.article-transition .side-avatar-wrap,html.article-transition .notes-aside,html.article-transition .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button,html.article-transition .notes-aside:not(.transition-stable) .notes-footer-links,html.article-transition .notes-aside:not(.transition-stable) .notes-footer>p{animation:none!important;opacity:1!important;transform:none!important}html.article-transition [data-title-transition-key],html.article-transition [data-transition-scope]{view-transition-name:none!important}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link{animation:side-nav-enter var(--duration-normal) var(--ease-out) both}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link:nth-child(1){animation-delay:80ms}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link:nth-child(2){animation-delay:112ms}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link:nth-child(3){animation-delay:144ms}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link:nth-child(4){animation-delay:176ms}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link:nth-child(5){animation-delay:208ms}html:not(.article-transition) body.page-entering.page-body .side-nav:not(.transition-stable) .nav-link:nth-child(6){animation-delay:.24s}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button{animation:aside-enter var(--duration-normal) var(--ease-out) both}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button:nth-child(1){animation-delay:.17s}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button:nth-child(2){animation-delay:205ms}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer-actions .notes-action-button:nth-child(3){animation-delay:.24s}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer-links,html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer>p{animation:aside-enter var(--duration-normal) var(--ease-out) both}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer-links{animation-delay:.28s}html:not(.article-transition) body.page-entering .notes-aside:not(.transition-stable) .notes-footer>p{animation-delay:.32s}@media(prefers-reduced-motion:no-preference){.archive-item-row.is-intro-revealing .archive-item,.archive-item-row.reveal-trigger .archive-item{opacity:1;animation:archive-intro-fade-up .38s cubic-bezier(.2,.6,.2,1) both;animation-delay:calc(var(--stagger-index, 0) * 55ms)}}@media(min-width:961px){.note-body .note-back-link{animation:article-back-enter var(--post-enter-duration) var(--ease-page) .2s both}}.note-body .note-meta .meta-transition-group>*,.note-body .note-meta>.meta-stagger,.note-body .note-updated.meta-stagger{animation:article-content-enter-mini var(--post-enter-duration) var(--ease-page) both;opacity:0}@media(min-width:961px){.note-body .note-meta .meta-transition-group>time{animation-delay:.16s}.note-body .note-meta .meta-transition-group>.reading-time{animation-delay:185ms}.note-body .note-meta>.meta-stagger:nth-child(2){animation-delay:.21s}.note-body .note-meta>.meta-stagger:nth-child(3){animation-delay:235ms}.note-body .note-updated.meta-stagger{animation-delay:.26s}}@media(max-width:960px){.note-body .note-meta .meta-transition-group>time,.note-body .note-meta .meta-transition-group>.reading-time{animation:none;opacity:1;transform:none}.note-body .note-meta>.meta-stagger:nth-child(2){animation-delay:.16s}.note-body .note-meta>.meta-stagger:nth-child(3){animation-delay:185ms}.note-body .note-updated.meta-stagger{animation-delay:.21s}}.note-body .note-summary{animation:article-content-enter-mini var(--post-enter-duration) var(--ease-page) 205ms both}@media(min-width:1281px){.note-body .note-toc-header{animation:article-content-enter-mini var(--post-enter-duration) var(--ease-page) backwards;animation-delay:175ms}.note-body .note-toc-panel li{animation:article-content-enter var(--post-enter-duration) var(--ease-page) backwards;animation-delay:calc(175ms + min(var(--toc-index, 0),8)*25ms)}.note-body .note-right-controls>*{animation:article-content-enter var(--post-enter-duration) var(--ease-page) backwards}.note-body .note-right-controls>*:nth-child(1){animation-delay:.15s}.note-body .note-right-controls>*:nth-child(2){animation-delay:.2s}.note-body .note-right-controls>*:nth-child(3){animation-delay:.25s}}.note-body .article-stagger-meta>*{animation:article-content-enter-mini var(--post-enter-duration) var(--ease-page) both;animation-delay:calc(.1s + min(var(--stagger-index, 0),10)*30ms);opacity:0}.note-body .post-content>*{animation:article-content-enter var(--post-enter-duration) var(--ease-page) both;opacity:0}.note-body .post-content>*:nth-child(1){animation-delay:.15s}.note-body .post-content>*:nth-child(2){animation-delay:.2s}.note-body .post-content>*:nth-child(3){animation-delay:.25s}.note-body .post-content>*:nth-child(4){animation-delay:.3s}.note-body .post-content>*:nth-child(5){animation-delay:.35s}.note-body .post-content>*:nth-child(6){animation-delay:.4s}.note-body .post-content>*:nth-child(7){animation-delay:.45s}.note-body .post-content>*:nth-child(8){animation-delay:.5s}.note-body .post-content>*:nth-child(9){animation-delay:.55s}.note-body .post-content>*:nth-child(10){animation-delay:.6s}.note-body .post-content>*:nth-child(11){animation-delay:.65s}.note-body .post-content>*:nth-child(12){animation-delay:.7s}.note-body .post-content>*:nth-child(13){animation-delay:.75s}.note-body .post-content>*:nth-child(14){animation-delay:.8s}.note-body .post-content>*:nth-child(15){animation-delay:.85s}.note-body .post-content>*:nth-child(n+16){animation-delay:.9s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-delay:0ms!important;animation-duration:1ms!important;scroll-behavior:auto!important;transition-duration:1ms!important}.hero-avatar-wrap,.side-avatar-wrap,.hero-name,.slogan-glyph,.notes-brand-name,.notes-item-title a,.article-meta-rows,.article-shared-meta,.article-stagger-meta,.note-title span,[data-article-shared]{view-transition-name:none!important}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:1ms!important}.note-back-link,.note-toc,.notes-item,.article-meta-rows,.article-shared-meta,.article-stagger-meta,.article-stagger-meta>*,.archive-year,.archive-item,.note-summary,.post-content>*{animation:none!important;opacity:1!important;transform:none!important;clip-path:none!important}.note-toc,.note-toc-panel{transition:none!important}.note-toc:not(.is-open) .note-toc-panel{opacity:0!important;transform:none!important;visibility:hidden!important}}html[data-reduced-motion=true] *,html[data-reduced-motion=true] *:before,html[data-reduced-motion=true] *:after{animation-delay:0ms!important;animation-duration:1ms!important;scroll-behavior:auto!important;transition-duration:1ms!important}html[data-reduced-motion=true] .hero-avatar-wrap,html[data-reduced-motion=true] .side-avatar-wrap,html[data-reduced-motion=true] .hero-name,html[data-reduced-motion=true] .slogan-glyph,html[data-reduced-motion=true] .notes-brand-name,html[data-reduced-motion=true] .notes-item-title a,html[data-reduced-motion=true] .article-meta-rows,html[data-reduced-motion=true] .article-shared-meta,html[data-reduced-motion=true] .article-stagger-meta,html[data-reduced-motion=true] .note-title span,html[data-reduced-motion=true] [data-article-shared]{view-transition-name:none!important}html[data-reduced-motion=true] .note-back-link,html[data-reduced-motion=true] .note-toc,html[data-reduced-motion=true] .notes-item,html[data-reduced-motion=true] .article-meta-rows,html[data-reduced-motion=true] .article-shared-meta,html[data-reduced-motion=true] .article-stagger-meta,html[data-reduced-motion=true] .article-stagger-meta>*,html[data-reduced-motion=true] .archive-year,html[data-reduced-motion=true] .archive-item,html[data-reduced-motion=true] .note-summary,html[data-reduced-motion=true] .post-content>*{animation:none!important;opacity:1!important;transform:none!important;clip-path:none!important}html[data-reduced-motion=true] .note-toc,html[data-reduced-motion=true] .note-toc-panel{transition:none!important}html[data-reduced-motion=true] .note-toc:not(.is-open) .note-toc-panel{opacity:0!important;transform:none!important;visibility:hidden!important}.title-glyph{view-transition-class:article-title-glyph;margin:0;padding:0;border:0;display:inline-block}html.article-transition::view-transition-group(.article-title-glyph){animation-duration:var(--duration-shared, .5s);animation-timing-function:cubic-bezier(.22,1,.36,1)}.slogan-glyph{view-transition-class:site-slogan-glyph;margin:0;padding:0;display:inline-block;white-space:pre-wrap}html::view-transition-group(.site-slogan-glyph){animation-duration:var(--duration-shared);animation-timing-function:var(--ease-out)}
