.footer-meta{width:100%}.footer-meta-line{margin:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem .65rem;font-size:var(--type-xs);line-height:1.4;color:var(--text-muted);text-align:center}.footer-meta-link{color:inherit;text-decoration:none;display:inline-block;position:relative;z-index:0;transform-origin:center;transition:color .22s ease,transform .18s ease}.footer-meta-link--copyright{width:100%}.footer-meta-link--copyright:after{white-space:pre-line;overflow-wrap:anywhere}.footer-meta-group{display:inline-flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:.45rem;width:100%}.footer-meta-separator--primary{display:none}@media(hover:hover){.footer-meta-link:hover{color:var(--line);transform:scale(1.04)}}.footer-meta-link:focus-visible{outline:none;color:var(--line);transform:scale(1.04)}@media(min-width:56.25rem){.footer-meta-line{align-items:flex-end;justify-content:flex-start;text-align:left;padding-top:clamp(.05rem,.18em,.3rem);padding-bottom:calc((var(--icon-btn-size) - var(--icon-size)) / 2 - .05em - clamp(.05rem,.18em,.3rem))}.footer-meta-link{width:auto}.footer-meta-link--copyright:after{left:0;transform:none}.footer-meta-group{width:auto}.footer-meta-separator--primary{display:inline}}@media(prefers-reduced-motion:reduce){.footer-meta-link{transition:none}.footer-meta-link:hover,.footer-meta-link:focus-visible{transform:none}}.signature-wrap{--signature-svg-max: min(6rem, 100%);width:100%;color:var(--line, #101010);text-decoration:none;min-height:0;display:flex;align-items:flex-end}.signature-mark{display:inline-block;width:min(var(--signature-svg-max),100%);will-change:clip-path}.signature-mark[data-signature-src=true]{aspect-ratio:394.6 / 80.8;background-color:currentColor;mask-image:var(--signature-mask);mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-image:var(--signature-mask);-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain}.signature-mark[data-signature-loaded=true]{aspect-ratio:auto;background-color:transparent;mask-image:none;-webkit-mask-image:none}.signature-wrap svg{display:block;width:100%;height:auto}.signature-mark svg,.signature-mark svg *{fill:currentColor!important;stroke:currentColor!important}@media(hover:hover){.signature-wrap:hover .signature-mark{animation:signature-write 1.45s cubic-bezier(.16,1,.3,1) both}.signature-wrap:hover .signature-mark[data-signature-inline=true] path{stroke-opacity:0}}.signature-wrap:focus-visible{outline:none}.signature-wrap:focus-visible .signature-mark{animation:signature-write 1.45s cubic-bezier(.16,1,.3,1) both}.signature-wrap:focus-visible .signature-mark[data-signature-inline=true] path{stroke-opacity:0}.signature-wrap:hover .signature-mark[data-signature-hover-locked=true],.signature-wrap:focus-visible .signature-mark[data-signature-hover-locked=true]{animation:none;clip-path:inset(0 0 0 0)}@keyframes signature-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@media(min-width:48rem){.signature-wrap{--signature-svg-max: min(6.75rem, 100%)}}@media(prefers-reduced-motion:reduce){.signature-wrap:hover .signature-mark,.signature-wrap:focus-visible .signature-mark{animation:none}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}:root[data-theme-transitioning]{view-transition-name:root!important}:root[data-theme-transitioning],:root[data-theme-transitioning] *,:root[data-theme-transitioning] *:before,:root[data-theme-transitioning] *:after{transition:none!important}:root[data-theme-transitioning]::view-transition,:root[data-theme-transitioning]::view-transition-group(*),:root[data-theme-transitioning]::view-transition-image-pair(*),:root[data-theme-transitioning]::view-transition-old(*),:root[data-theme-transitioning]::view-transition-new(*){pointer-events:none}:root[data-theme-transitioning]::view-transition-old(root),:root[data-theme-transitioning]::view-transition-new(root){mix-blend-mode:normal}:root[data-theme-transitioning]::view-transition-old(root){z-index:1}:root[data-theme-transitioning]::view-transition-new(root){z-index:2}.theme-btn[data-theme-changing]:before{position:absolute;top:.05rem;right:.05rem;width:.5rem;height:.5rem;background:currentColor;clip-path:polygon(50% 0%,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0% 50%,39% 39%);content:"";pointer-events:none;animation:theme-star-glint .65s ease-out both}.theme-btn[data-theme-changing]:after{visibility:hidden}@keyframes theme-star-glint{0%{opacity:0;transform:scale(.4) rotate(-25deg)}30%{opacity:.8;transform:scale(1) rotate(0)}to{opacity:0;transform:scale(.6) rotate(25deg)}}@media(prefers-reduced-motion:reduce){.theme-btn[data-theme-changing]:before{display:none;animation:none}}@media(prefers-reduced-motion:no-preference){.home-shell [data-scroll-reveal=pending]{opacity:0;translate:0 16px;pointer-events:none;transition:none}.home-shell [data-scroll-reveal=entered]{animation:scroll-reveal-in .5s cubic-bezier(.22,1,.36,1) var(--scroll-reveal-delay, 0s) backwards}.home-shell [data-scroll-reveal-kind=timeline]{translate:none;animation:none}[data-scroll-reveal=entered] :is(.archive-activity-timeline-line,.archive-activity-orbit){animation:scroll-reveal-line .7s cubic-bezier(.22,1,.36,1) var(--scroll-reveal-delay, 0s) backwards}[data-scroll-reveal=entered] :is(.archive-activity-timeline-bucket,.archive-activity-timeline-month,.archive-activity-timeline-year){animation:scroll-reveal-fade .35s cubic-bezier(.22,1,.36,1) calc(var(--scroll-reveal-delay, 0s) + var(--scroll-reveal-node-delay, .7s)) backwards}.home-activity-title[data-scroll-reveal=entered]{animation-duration:.6s}}@keyframes scroll-reveal-in{0%{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}@keyframes scroll-reveal-fade{0%{opacity:0}to{opacity:1}}@keyframes scroll-reveal-line{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0% 0 0)}}@media print,(prefers-reduced-motion:reduce){.home-shell [data-scroll-reveal]{opacity:1;translate:none;animation:none;pointer-events:auto}[data-scroll-reveal] :is(.archive-activity-timeline-line,.archive-activity-orbit,.archive-activity-timeline-bucket,.archive-activity-timeline-month,.archive-activity-timeline-year){animation:none}}:where([data-icon-tooltip],[data-icon-hover]){position:relative;border-radius:999px}[data-icon-tooltip]:after{content:attr(aria-label);position:absolute;bottom:calc(100% + .4rem);left:50%;z-index:50;width:max-content;max-width:min(18rem,calc(100vw - 2rem));padding:.35rem .6rem;border:1px solid var(--border-soft);border-radius:.5rem;background:var(--paper);box-shadow:0 .25rem .75rem color-mix(in srgb,var(--line) 8%,transparent);color:var(--line);font-family:Biotif,sans-serif;font-size:.75rem;font-weight:500;line-height:1.4;text-align:center;white-space:normal;opacity:0;visibility:hidden;transform:translate(-50%);pointer-events:none;transition:opacity .15s ease,visibility .15s ease}[data-icon-tooltip]:not([data-icon-tooltip=""]):after{content:attr(data-icon-tooltip)}[data-icon-tooltip][data-tooltip-placement=bottom]:after{top:calc(100% + .4rem);bottom:auto}[data-icon-tooltip][data-tooltip-align=end]:after{left:auto;right:0;transform:none}[data-icon-tooltip][data-tooltip-placement=left]:after{top:50%;bottom:auto;left:auto;right:calc(100% + .4rem);transform:translateY(-50%)}@media(hover:hover){:root body :is([data-icon-tooltip],[data-icon-hover]):hover{border-radius:999px;background:color-mix(in srgb,var(--line) 8%,var(--paper))}[data-icon-tooltip]:hover:after{opacity:1;visibility:visible}}:root body :is([data-icon-tooltip],[data-icon-hover]):focus-visible{border-radius:999px;background:color-mix(in srgb,var(--line) 8%,var(--paper));outline:2px solid currentColor;outline-offset:2px}[data-icon-tooltip]:focus-visible:after{opacity:1;visibility:visible}@media(prefers-reduced-motion:reduce){[data-icon-tooltip]:after{transition:none}}.snow-bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;contain:strict;background-color:#fff;--fg: #7d7d7d;--snow-strength: 38%;--snow-ink: color-mix( in srgb, var(--fg) var(--snow-strength, 28%), transparent )}.snow-flake{position:absolute;top:var(--snow-y);left:var(--snow-x);width:var(--snow-size);height:var(--snow-size);display:block;color:var(--snow-ink);opacity:var(--snow-opacity);transform:translateZ(0) rotate(var(--snow-rotate));transform-origin:50% 50%}.snow-flake:before{content:"";position:absolute;inset:0;background-color:currentColor;mask-image:url(/snowflake-crystal.svg);mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-image:url(/snowflake-crystal.svg);-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain}.snow-flake--rounded:before{mask-image:url(/snowflake-rounded.svg);-webkit-mask-image:url(/snowflake-rounded.svg)}:root[data-theme=light] .snow-bg{background-color:#fff;--fg: #7d7d7d;--snow-strength: 38%}.snow-bg[data-mode=dark],:root[data-theme=dark] .snow-bg{background-color:#000;--fg: #ffffff;--snow-strength: 26%}@keyframes snow-flake-spin-fall{0%{transform:translateZ(0) rotate(var(--snow-rotate))}to{transform:translate3d(var(--snow-drift-x),136vh,0) rotate(calc(var(--snow-rotate) + var(--snow-spin)))}}@keyframes snow-flake-drift-fall{0%{transform:translateZ(0) rotate(var(--snow-rotate))}to{transform:translate3d(var(--snow-drift-x),136vh,0) rotate(var(--snow-rotate))}}@media(prefers-reduced-motion:no-preference){.snow-bg[data-animated=true] .snow-flake{top:-18vh;animation-duration:var(--snow-duration);animation-delay:var(--snow-delay);animation-iteration-count:infinite;animation-timing-function:linear}.snow-bg[data-animated=true] :is(.snow-flake--near,.snow-flake--mid){animation-name:snow-flake-spin-fall;will-change:transform}.snow-bg[data-animated=true] .snow-flake--far{animation-name:snow-flake-drift-fall}}@media(prefers-reduced-motion:reduce){.snow-flake{animation:none;will-change:auto}}@media(forced-colors:active){.snow-flake{display:none!important}}:root{--fg: #7d7d7d;--muted: #7d7d7d}.constellation-bg{position:fixed;inset:0;z-index:0;pointer-events:none;background-color:#fff}.constellation-bg__canvas{width:100%;height:100%;display:block;opacity:.9}:root[data-theme=dark]{--fg: #ffffff;--muted: #ffffff}:root[data-theme=dark] .constellation-bg{background-color:#000}@media(prefers-reduced-motion:reduce){.constellation-bg__canvas{opacity:.7}}.coderain{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0;--rain: rgba(0, 0, 0, 1);--rain-alpha-boost: 0;background-color:#fff}html[data-theme=dark] .coderain,:root[data-theme=dark] .coderain{--rain: rgba(255, 255, 255, 1);--rain-alpha-boost: .09;background-color:#000}.coderain__drop{position:absolute;top:-20%;color:var(--rain);opacity:calc(var(--alpha) + var(--rain-alpha-boost));font-family:var( --mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace );white-space:nowrap;animation:rain var(--dur) linear infinite;animation-delay:var(--delay);will-change:transform}.coderain__drop.is-bright{opacity:.14}@keyframes rain{to{transform:translateY(125vh)}}@media(prefers-reduced-motion:reduce){.coderain__drop{animation:none;display:none}}.content-bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;--content-bg-paper: #fafafa;--content-bg-grid: rgba(18, 18, 18, .095);--content-bg-grid-major: rgba(18, 18, 18, .16);--content-bg-margin: rgba(18, 18, 18, .22);--content-bg-edge: rgba(18, 18, 18, .11);--content-bg-hole: rgba(255, 255, 255, .54);--content-bg-hole-border: rgba(18, 18, 18, .14);--content-bg-shadow: rgba(18, 18, 18, .08);--content-bg-grid-size: 24px;--content-bg-grid-major-size: 120px;background-color:var(--content-bg-paper);background-image:linear-gradient(var(--content-bg-grid) 1px,transparent 1px),linear-gradient(90deg,var(--content-bg-grid) 1px,transparent 1px),linear-gradient(var(--content-bg-grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--content-bg-grid-major) 1px,transparent 1px);background-position:center top;background-size:var(--content-bg-grid-size) var(--content-bg-grid-size),var(--content-bg-grid-size) var(--content-bg-grid-size),var(--content-bg-grid-major-size) var(--content-bg-grid-major-size),var(--content-bg-grid-major-size) var(--content-bg-grid-major-size)}.content-bg:after{position:absolute;inset:0;box-shadow:inset 0 0 clamp(4rem,10vw,8rem) var(--content-bg-shadow);content:""}.content-bg__margin-line{position:absolute;top:0;bottom:0;left:clamp(4rem,10vw,8.5rem);width:1px;background-color:var(--content-bg-margin)}.content-bg__paper-edge{position:absolute;left:clamp(1rem,3vw,2.5rem);right:clamp(1rem,3vw,2.5rem);height:1px;background-color:var(--content-bg-edge);opacity:.6}.content-bg__paper-edge--top{top:clamp(2.7rem,6vh,4.2rem)}.content-bg__paper-edge--bottom{bottom:clamp(2.7rem,6vh,4.2rem)}.content-bg__corner{position:absolute;width:clamp(5.5rem,11vw,10rem);height:clamp(5.5rem,11vw,10rem);border-color:var(--content-bg-edge);border-style:solid;opacity:.36}.content-bg__corner--top-left{top:clamp(1rem,3vw,2.4rem);left:clamp(1rem,3vw,2.4rem);border-width:1px 0 0 1px}.content-bg__corner--bottom-right{right:clamp(1rem,3vw,2.4rem);bottom:clamp(1rem,3vw,2.4rem);border-width:0 1px 1px 0}.content-bg__punches{position:absolute;left:clamp(1.15rem,3.2vw,2.5rem);top:50%;display:grid;gap:clamp(1.7rem,5vh,3.4rem);transform:translateY(-50%)}.content-bg__punches span{width:clamp(.42rem,.58vw,.64rem);height:clamp(.42rem,.58vw,.64rem);border:1px solid var(--content-bg-hole-border);border-radius:999px;background-color:var(--content-bg-hole);box-shadow:inset 0 .12rem .22rem var(--content-bg-shadow)}:root[data-theme=dark] .content-bg{--content-bg-paper: #030303;--content-bg-grid: rgba(245, 245, 245, .07);--content-bg-grid-major: rgba(245, 245, 245, .125);--content-bg-margin: rgba(245, 245, 245, .16);--content-bg-edge: rgba(245, 245, 245, .12);--content-bg-hole: rgba(255, 255, 255, .035);--content-bg-hole-border: rgba(245, 245, 245, .12);--content-bg-shadow: rgba(0, 0, 0, .42)}@media(max-width:48rem){.content-bg{--content-bg-grid-size: 20px;--content-bg-grid-major-size: 100px}.content-bg__margin-line{left:clamp(2.8rem,12vw,4.4rem)}.content-bg__punches{left:.85rem;opacity:.58}.content-bg__paper-edge{left:.8rem;right:.8rem}}.floating-action-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;width:var(--icon-btn-size);height:var(--icon-btn-size);padding:0;border:1px solid color-mix(in srgb,var(--line) 16%,transparent);border-radius:999px;background:color-mix(in srgb,white 76%,transparent);color:var(--line);box-shadow:0 .75rem 2rem color-mix(in srgb,var(--line) 12%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;transition:color .22s ease}.floating-action-button-icon,.floating-action-button-icon svg{display:inline-flex;width:var(--icon-size);height:var(--icon-size)}.floating-action-button-text{font-size:var(--type-sm);font-weight:600;line-height:1}.floating-action-button--document-progress{font-variant-numeric:tabular-nums}.document-progress-fab-percent{min-width:2.1rem;font-size:var(--type-xs);font-weight:700;line-height:1;text-align:center}.document-progress-fab-icon,.document-progress-fab-icon svg{display:inline-flex;width:var(--icon-size);height:var(--icon-size)}.document-progress-fab-percent[hidden],.document-progress-fab-icon[hidden],.floating-action-button[hidden]{display:none!important}:root[data-theme=dark] .floating-action-button{border-color:#ffffff1f;background:#14161ee0;color:#f5f5f5f5;box-shadow:0 .75rem 2rem #00000047}:root{--paper: #ffffff;--line: #111111;--line-soft: rgba(17, 17, 17, .88);--accent: var(--line);--border-soft: color-mix(in srgb, var(--line) 14%, transparent);--text-muted: color-mix(in srgb, var(--line) 68%, transparent);--article-paper-surface: #fdfcf9;--article-paper-border: rgba(17, 17, 17, .13);--article-paper-shadow: rgba(17, 17, 17, .12);--radius-sm: .5rem;--radius-md: 1rem;--font-size-base: 100%;--type-xs: .8125rem;--type-sm: .875rem;--type-base: 1rem;--type-md: 1.125rem;--type-lg: 1.375rem;--type-xl: 1.75rem;--type-2xl: 2.25rem;--type-page-title: 2.5rem;--type-content-body: 1.0625rem;--type-content-body-zh: 1.0625rem;--type-content-code: .875rem;--type-content-caption: .875rem;--type-content-h1: 1.75rem;--type-content-h2: 1.5rem;--type-content-h3: 1.3125rem;--type-content-h4: 1.1875rem;--type-content-h5: 1.0625rem;--type-content-h6: 1rem;--type-toc-title: 1.12rem;--type-toc-depth-1: .96rem;--type-toc-depth-2: .88rem;--type-toc-depth-3: .82rem;--type-toc-depth-4: .77rem;--type-toc-depth-5: .73rem;--type-toc-depth-6: .7rem;--type-toc-mobile-title: .96rem;--shell-max: 88rem;--reading-page-max: 56rem;--space: .5rem;--header-main-gap: 2rem;--footer-height: .75rem;--main-col-1-min: 7.5rem;--main-col-1-size: 10.5rem;--main-col-2-min: 7.5rem;--main-col-3-min: 7.5rem;--main-col-1-fr: .5fr;--main-col-2-fr: 2.5fr;--main-col-3-fr: 3.5fr;--main-col-gap: 1.5rem;--nav-flyout-min: clamp(10.5rem, 18vw, 14rem);--icon-size: 1.375rem;--icon-btn-size: max(44px, 2.75rem);--menu-trigger-width: var(--icon-btn-size);--menu-trigger-height: var(--icon-btn-size);--menu-icon-size: var(--icon-size);--signature-link-size: 1rem;--layout-sticky-top: max( clamp(.35rem, 1vw, .75rem), env(safe-area-inset-top) );--layout-sticky-main-top: 6rem}:root[data-theme=dark]{--paper: #000000;--line: #f5f5f5;--line-soft: rgba(245, 245, 245, .9);--article-paper-surface: #08090a;--article-paper-border: rgba(245, 245, 245, .15);--article-paper-shadow: rgba(0, 0, 0, .48)}*{box-sizing:border-box}html{font-size:var(--font-size-base);overflow-x:clip;overflow-y:auto;scrollbar-gutter:stable;overscroll-behavior-y:none;background-color:#fff;color-scheme:light}:root[data-theme=dark]{background-color:#000;color-scheme:dark}body{margin:0;min-height:100dvh;background-color:inherit;color:var(--line);line-height:1.5;font-family:Biotif,PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif;overflow-x:clip;overflow-y:visible}.content-page{width:100%;display:block;align-self:stretch}.content-page-body{font-size:inherit;height:auto;padding:clamp(.85rem,1.8vw,1.4rem);overflow:visible}.content-page-body h1,.listing-header-title,.collection-page-title,.article-content-title{color:transparent;-webkit-text-stroke:1px var(--line);text-stroke:1px var(--line)}.content-page-body h1{margin:0 0 1rem;font-size:var(--type-page-title);font-weight:500;line-height:1.1}.content-page-body h2,.content-page-body h3,.content-page-body p,.content-page-body li{color:var(--line)}.content-page-body a{color:color-mix(in srgb,var(--accent) 82%,var(--line) 18%);text-decoration:none}.content-toc{width:100%;position:relative;height:auto;padding:clamp(.85rem,1.8vw,1.4rem);padding-right:clamp(1.35rem,1.1rem + .8vw,1.95rem);display:flex;flex-direction:column;gap:.9rem;overflow:visible}.content-toc-list{list-style:none;margin:0;padding:0 0 0 .9rem;display:flex;flex-direction:column;gap:.65rem}.content-toc-title{margin:0;color:var(--line);font-size:var(--type-toc-title);font-weight:400;line-height:1.15}.content-toc a,.content-toc-link{display:block;max-width:100%;min-width:0;overflow:hidden;color:color-mix(in srgb,var(--line) 58%,transparent);text-overflow:ellipsis;text-decoration:none;white-space:nowrap}@media(forced-colors:active){:root,:root[data-theme=dark]{--line: CanvasText;--line-soft: CanvasText;--accent: LinkText;--border-soft: CanvasText;--text-muted: GrayText;--content-text-color: CanvasText}html,body{background-color:Canvas!important;color:CanvasText!important;color-scheme:light dark}a{color:LinkText!important}:is(button,input,textarea,select){border-color:ButtonBorder!important;color:ButtonText!important}:is(a,button,summary,input,textarea,select,[role=button],[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid Highlight!important;outline-offset:3px!important}:is(.content-page-body h1,.listing-header-title,.collection-page-title,.article-content-title,.article-comments-title,.latest-articles-title-text,.latest-articles-year-label){color:CanvasText!important;-webkit-text-stroke:0!important;text-stroke:0!important}.content-page-body .content-spoiler{border:1px solid CanvasText!important;background:CanvasText!important;color:Canvas!important}.content-page-body .content-spoiler:is(:hover,:focus-visible){background:Canvas!important;color:CanvasText!important}:is(.snow-bg,.content-bg,.coderain,.constellation-bg,.article-reading-paper,.nav-panel,.content-toc,.mobile-nav-drawer .nav-panel){background:Canvas!important;background-image:none!important;box-shadow:none!important;color:CanvasText!important}.content-bg:after,.snow-bg:before,.snow-bg:after,.coderain__drop,.constellation-bg__canvas{display:none!important}*,*:before,*:after{text-shadow:none!important}:is(.nav-panel,.content-toc,.mobile-nav-drawer .nav-panel,.content-bg__corner,.content-bg__punches span){border-color:CanvasText!important}}.home-shell{position:relative;z-index:1;height:auto;min-height:100dvh;width:min(calc(100% - 1.5rem),var(--shell-max));margin-inline:auto;padding:var(--space);display:flex;flex-direction:column;gap:var(--space);overflow:visible}.home-header{--nav-star-shape: polygon( 50% 0%, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0% 50%, 39% 39% );position:sticky;top:var(--layout-sticky-top);z-index:30;isolation:isolate;opacity:var(--header-opacity, 1);transform:translate3d(0,var(--header-shift, 0px),0);transition:transform .12s ease-out,opacity .12s ease-out}.home-header-inner{position:relative;width:100%;margin-inline:auto;padding:.75rem;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:clamp(.3rem,.8vw,.55rem);isolation:isolate}.home-header-inner:before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;pointer-events:none;transition:opacity .12s ease}.home-header-inner:before{border:1px solid color-mix(in srgb,var(--line) 9%,transparent);border-radius:999px;background:color-mix(in srgb,var(--paper) 88%,transparent);box-shadow:0 .5rem 1.75rem color-mix(in srgb,var(--line) 5%,transparent),inset 0 1px color-mix(in srgb,var(--line) 3%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.home-header[data-floating=true] .home-header-inner{max-width:44rem;padding:.5rem 1rem}.home-header[data-floating=true] .home-header-inner:before,.home-header[data-floating=true] .header-star-field{opacity:1}.header-star-field{position:absolute;inset:0;z-index:1;opacity:0;pointer-events:none;transition:opacity .12s ease}.header-star-field>span{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--line);box-shadow:0 0 6px color-mix(in srgb,var(--line) 30%,transparent);opacity:var(--star-brightness)}.header-star-field>span:nth-child(-n+2){border-radius:0;clip-path:var(--nav-star-shape)}.header-star-field>span:nth-child(1){--star-drift: 13s;--star-breathe: 6.7s;--star-delay: -3s;--star-x: 11px;--star-y: -5px;--star-brightness: .9;top:-3px;left:16%;width:9px;height:9px}.header-star-field>span:nth-child(2){--star-drift: 17s;--star-breathe: 8.3s;--star-delay: -11s;--star-x: -9px;--star-y: 6px;--star-brightness: .75;bottom:-3px;left:78%;width:7px;height:7px}.header-star-field>span:nth-child(3){--star-drift: 19s;--star-breathe: 9.1s;--star-delay: -7s;--star-x: 7px;--star-y: 5px;--star-brightness: .4;bottom:-5px;left:31%}.header-star-field>span:nth-child(4){--star-drift: 23s;--star-breathe: 7.7s;--star-delay: -16s;--star-x: -12px;--star-y: -4px;--star-brightness: .3;top:-4px;left:62%;width:2px;height:2px}.header-star-field>span:nth-child(5){--star-drift: 15s;--star-breathe: 10.9s;--star-delay: -5s;--star-x: 5px;--star-y: -6px;--star-brightness: .45;top:40%;right:-5px}@media(prefers-reduced-motion:no-preference){.header-star-field>span{animation:header-star-drift var(--star-drift) ease-in-out var(--star-delay) infinite paused,header-star-breathe var(--star-breathe) ease-in-out var(--star-delay) infinite paused}.home-header[data-floating=true][data-scroll-hidden=false] .header-star-field>span{animation-play-state:running}}@keyframes header-star-drift{0%,to{transform:translate(0) rotate(-8deg)}38%{transform:translate(var(--star-x),var(--star-y)) rotate(12deg)}72%{transform:translate(calc(var(--star-x) * .35),calc(var(--star-y) * -.5)) rotate(3deg)}}@keyframes header-star-breathe{0%,to{opacity:calc(var(--star-brightness) * .55)}50%{opacity:var(--star-brightness)}}.home-header[data-floating=true] .signature-area{padding-left:0}.home-header[data-scroll-hidden=true]{pointer-events:none}.home-header:has(:focus-visible),.home-header:has([data-home-shell-mobile-nav][open]){opacity:1;transform:none;pointer-events:auto}@media(prefers-reduced-motion:reduce){.home-header-inner:before,.header-star-field,.home-header .top-nav-links a:after{transition:none}.home-header{opacity:1;transform:none;transition:none}}.desktop-top-nav{display:none}.top-nav-links{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.25rem;margin:0;padding:0;list-style:none}.top-nav-links a{position:relative;display:inline-flex;align-items:center;min-height:var(--icon-btn-size);padding:.5rem .75rem;color:var(--text-muted);font-size:var(--type-base);text-decoration:none;transition:color .18s ease}.top-nav-links a:after{content:"";position:absolute;top:.3rem;right:.15rem;width:.45rem;height:.45rem;background:currentColor;clip-path:var(--nav-star-shape);opacity:0;transform:scale(.65) rotate(-15deg);pointer-events:none;transition:opacity .18s ease,transform .18s ease}.top-nav-links a:hover,.top-nav-links a:focus-visible,.top-nav-links a[data-active=true]{color:var(--line)}.top-nav-links a[data-active=true]:after{opacity:1;transform:scale(1) rotate(12deg)}@media(hover:hover){.top-nav-links a:hover:after{opacity:1;transform:scale(1) rotate(12deg)}}.top-nav-links a:focus-visible{outline:2px solid currentColor;outline-offset:2px}.wire-box{min-width:0}.signature-area{width:min(100%,14rem);min-height:var(--icon-btn-size);display:flex;align-items:center;justify-self:start;padding-bottom:0;margin-bottom:0}.signature-stack{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:.35rem}.signature-collapse-links{list-style:none;margin:0;padding:0}.signature-collapse-links a{display:inline-block;width:auto;max-width:100%;padding:1.2rem .8rem;color:var(--line-soft);text-decoration:none;font-size:var(--signature-link-size);line-height:1.3;transform:translate(0);transition:color .22s ease,transform .22s cubic-bezier(.22,1,.36,1)}@media(hover:hover){.signature-collapse-links a:hover{color:var(--line);transform:translate(.22rem)}}.signature-collapse-links a:focus-visible{outline:none;color:var(--line);transform:translate(.22rem)}.nav-drawer{position:relative;width:fit-content}.mobile-nav-drawer{--mobile-nav-link-gap: .1rem;--mobile-nav-link-padding: .6rem .72rem;--mobile-nav-link-radius: .65rem;display:inline-flex;align-items:center}.hamburger{width:var(--icon-btn-size);height:var(--icon-btn-size);border:0;padding:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;list-style:none;color:var(--line-soft);line-height:0;transition:color .2s ease,opacity .2s ease}.hamburger::-webkit-details-marker{display:none}.hamburger svg{width:var(--icon-size);height:var(--icon-size);display:block}.nav-panel{position:absolute;top:calc(100% + .5rem);left:0;min-width:var(--nav-flyout-min);padding:.25rem 0;display:block;z-index:2;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-.35rem);transform-origin:top right;transition:opacity .22s ease,transform .26s cubic-bezier(.22,1,.36,1),visibility 0s linear .26s}.mobile-nav-drawer .nav-panel{left:auto;right:0}.mobile-nav-drawer .nav-panel{top:calc(100% + .55rem);width:auto;min-width:8.75rem;max-width:min(56vw,11.5rem);padding:.35rem;border:1px solid rgba(17,17,17,.1);border-radius:.9rem;background:#fffffff0;box-shadow:0 .9rem 2rem #1111111f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);overflow:hidden;z-index:12}.mobile-nav-drawer .signature-collapse-links{display:flex;flex-direction:column;gap:var(--mobile-nav-link-gap)}.mobile-nav-drawer .signature-collapse-links li{width:100%}.mobile-nav-drawer .signature-collapse-links a{display:block;width:100%;padding:var(--mobile-nav-link-padding);border-radius:var(--mobile-nav-link-radius);color:var(--line);font-size:.92rem;line-height:1.3;-webkit-tap-highlight-color:transparent}.mobile-nav-drawer .signature-collapse-links a:hover,.mobile-nav-drawer .signature-collapse-links a:focus-visible{outline:none;color:var(--line);background:color-mix(in srgb,var(--line) 7%,transparent);transform:translate(0)}.nav-drawer[open] .nav-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);transition:opacity .22s ease,transform .26s cubic-bezier(.22,1,.36,1),visibility 0s linear 0s}.header-actions{grid-column:2;min-height:var(--icon-btn-size);min-width:0;display:inline-flex;align-items:center;justify-content:flex-end;gap:clamp(.25rem,.8vw,.5rem);justify-self:end;margin-left:auto;padding-bottom:0;margin-bottom:0}.theme-switcher{display:inline-flex;align-items:center;gap:0}.theme-btn,.search-btn{width:var(--icon-btn-size);height:var(--icon-btn-size);border:0;background:transparent;color:var(--line-soft);display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:0;cursor:pointer;transition:color .2s ease,opacity .2s ease,transform .18s ease}.theme-btn svg,.search-btn svg{width:var(--icon-size);height:var(--icon-size);display:block}.theme-btn [data-theme-icon]:not([hidden]){width:var(--icon-size);height:var(--icon-size);display:inline-flex;align-items:center;justify-content:center}.theme-btn [data-theme-icon]:not([hidden]) svg{width:100%;height:100%}.theme-btn[aria-pressed=true]{color:var(--line)}@media(hover:hover){.theme-btn:hover,.search-btn:hover{color:var(--line);transform:translateY(-.08rem)}.hamburger:hover{color:var(--line)}}.theme-btn:focus-visible,.search-btn:focus-visible{outline:none;color:var(--line);transform:translateY(-.08rem)}.hamburger:focus-visible{outline:none;color:var(--line)}.home-shell-search-root{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);opacity:0;pointer-events:none}.home-shell-search-root .sitesearch-button{display:none!important}:root[data-theme=dark] .ss-exp,:root[data-theme=dark] .modal-backdrop,:root[data-theme=dark] .sitesearch-button{--search-primary-color: #7aa2ff;--search-secondary-color: #9aa1b2;--search-background-color: #202127;--search-neutral-color: #111016;--search-subtle-color: #94a3b8;--search-text-color: #e5e7eb;--search-subtle-text-color: #94a3b8;--search-border-color: #374151;--search-hover-color: #1f2937}.home-main{flex:1 0 auto;display:grid;grid-template-columns:1fr;gap:var(--main-col-gap);margin-top:calc(var(--header-main-gap) - var(--space));min-height:0;align-items:start}.profile-area{min-height:0;height:auto;max-height:none;display:flex;align-items:center;justify-content:flex-start;overflow:visible}.latest-area{min-height:0;height:auto;max-height:none;grid-column:1 / -1;overflow:visible}.home-footer{position:relative;z-index:2;padding:clamp(.55rem,1vw,.85rem);padding-top:clamp(.8rem,1.5vw,1.4rem);border-top:1px solid var(--line-soft);display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:0}.footer-info{flex:1 1 100%;min-width:0;min-height:var(--footer-height);height:auto;display:flex;align-items:center;justify-content:center;overflow-wrap:anywhere}.footer-icons{flex:0 1 100%;min-height:var(--footer-height);display:inline-flex;align-items:center;justify-content:center;gap:clamp(.4rem,.7vw,.55rem);margin-left:0}.footer-rss-btn{width:var(--icon-btn-size);height:var(--icon-btn-size);border:0;background:transparent;color:var(--line-soft);display:inline-flex;align-items:center;justify-content:center;padding-bottom:0;cursor:pointer;text-decoration:none;transform-origin:center bottom;transition:color .2s ease,opacity .2s ease,transform .18s ease}@media(hover:hover){.footer-rss-btn:hover{color:var(--line);transform:scale(1.12)}}.footer-rss-btn:focus-visible{outline:2px solid currentColor;outline-offset:2px;color:var(--line);transform:scale(1.12)}.footer-rss-btn svg{width:var(--icon-size);height:var(--icon-size)}@media(prefers-reduced-motion:reduce){.footer-rss-btn{transition:none}.footer-rss-btn:hover,.footer-rss-btn:focus-visible{transform:none}}@media(min-width:56.25rem){.home-shell--article{height:auto;min-height:100dvh;overflow:visible}.home-footer{align-items:flex-end;flex-wrap:nowrap;justify-content:flex-start;padding-top:clamp(.15rem,.35vw,.35rem)}.footer-info{flex:1 1 auto;align-items:flex-end;justify-content:flex-start}.footer-icons{flex:0 0 auto;align-items:flex-end;justify-content:flex-end;margin-left:auto}.home-header-inner{grid-template-columns:minmax(0,1fr) auto auto;column-gap:1rem;padding-left:3.5rem}.home-header[data-floating=true] .home-header-inner{width:fit-content;grid-template-columns:auto auto auto;column-gap:.75rem}.home-header[data-floating=true] .top-nav-links a{padding-inline:.5rem}.home-header[data-floating=true] .signature-area{width:7.5rem;padding-left:0}.home-header[data-floating=true] .desktop-top-nav{padding-left:.875rem;border-left:1px solid var(--border-soft)}.desktop-top-nav{display:block;grid-column:2;justify-self:end}.top-nav-links{justify-content:flex-end}.header-actions{grid-column:3;align-items:center}.header-actions:before{content:"";flex:0 0 1px;width:1px;height:1.5rem;margin-right:.5rem;background:var(--border-soft)}.theme-switcher{align-items:flex-end}.mobile-nav-drawer{display:none}.home-main{grid-template-columns:minmax(0,1fr) minmax(0,var(--reading-page-max)) minmax(0,1fr)}.home-main{min-height:0;width:100%;align-self:stretch}.home-main:has(.home-profile-sequence){grid-template-columns:minmax(0,1fr) minmax(0,68rem) minmax(0,1fr);row-gap:3rem}.home-main:has(.home-profile-sequence) .profile-area{grid-column:2;grid-row:1;justify-content:center}.home-main:has(.home-profile-sequence) .latest-area{grid-column:2;grid-row:2}.home-main:has([data-home-shell-content-page]){grid-template-columns:minmax(8rem,1fr) minmax(0,var(--reading-page-max)) minmax(8rem,1fr)}.profile-area{grid-column:2}.home-main:has([data-home-shell-content-page]) .latest-area{justify-content:flex-end}.latest-area>[data-home-shell-content-toc]{max-width:16rem;margin-left:auto}.home-shell--article .home-main{overflow:visible}.profile-area,.latest-area{min-height:0;height:auto;max-height:none}.home-shell--article .profile-area,.home-shell--article .latest-area{height:auto;max-height:none;overflow:visible}.latest-area{grid-column:3;display:flex;align-items:flex-start;justify-content:flex-start;overflow:visible}.home-shell--article .latest-area{overflow:visible}.latest-area:has(>[data-home-shell-content-toc]){position:sticky;top:var(--layout-sticky-main-top);align-self:start;max-height:calc(100dvh - var(--layout-sticky-main-top) - var(--space));z-index:6}.latest-area>[data-home-shell-content-toc]{position:static;top:auto}}.floating-action-stack{position:fixed;right:max(1rem,calc((100vw - var(--shell-max)) / 2 + 1rem));bottom:1rem;z-index:45;display:flex;align-items:center;gap:.7rem;pointer-events:none}.floating-action-stack>*{pointer-events:auto}@media(min-width:56.25rem){.floating-action-button--toc{display:none}}.floating-action-stack[hidden]{display:none!important}.hamburger,.mobile-nav-drawer .signature-collapse-links a{-webkit-tap-highlight-color:transparent}:root[data-theme=dark] .mobile-nav-drawer .nav-panel{border-color:#ffffff1f;background:#101218f0;box-shadow:0 1rem 2.4rem #00000059}:root[data-theme=dark] .mobile-nav-drawer .signature-collapse-links a{color:#f5f5f5f5}@media not all and (min-width:56.25rem){html,body{height:auto;overflow-x:clip}.home-shell{height:auto;min-height:100dvh;overflow:visible}.home-main{align-items:start}.profile-area,.latest-area{height:auto;max-height:none;overflow:visible}}.home-header:has(>.home-header-inner){min-height:calc(var(--icon-btn-size) + 1.5rem)}.home-header .home-header-inner{width:100%;max-width:100%;transition:max-width .44s cubic-bezier(.22,1,.36,1),padding .44s cubic-bezier(.22,1,.36,1),column-gap .44s cubic-bezier(.22,1,.36,1)}.home-header[data-floating=true] .home-header-inner{width:100%;max-width:44rem}.home-header .home-header-inner:before,.home-header .header-star-field{transition:opacity .36s ease}.home-header .signature-area{transition:width .44s cubic-bezier(.22,1,.36,1),padding .44s cubic-bezier(.22,1,.36,1)}.home-header .top-nav-links a{transition:color .18s ease,padding .44s cubic-bezier(.22,1,.36,1)}@media(min-width:56.25rem){.home-header .home-header-inner,.home-header[data-floating=true] .home-header-inner{grid-template-columns:minmax(0,1fr) auto auto}.home-header .desktop-top-nav{border-left:1px solid transparent;padding-left:0;transition:padding .44s cubic-bezier(.22,1,.36,1),border-color .36s ease}}@media(prefers-reduced-motion:reduce){.home-header .home-header-inner,.home-header .home-header-inner:before,.home-header .header-star-field,.home-header .signature-area,.home-header .top-nav-links a,.home-header .desktop-top-nav{transition:none}}
