.os-size-observer,.os-size-observer-listener{direction:inherit;pointer-events:none;visibility:hidden;box-sizing:border-box;overflow:hidden;scroll-behavior:auto!important}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;top:0;left:0}.os-size-observer{z-index:-1;contain:strict;padding:inherit;border:inherit;box-sizing:inherit;flex-flow:row;margin:-133px;display:flex;inset:0;transform:scale(.1)}.os-size-observer:before{content:"";box-sizing:inherit;flex:none;width:10px;height:10px;padding:10px}.os-size-observer-appear{animation:1ms forwards os-size-observer-appear-animation}.os-size-observer-listener{box-sizing:border-box;padding:inherit;border:inherit;flex:auto;margin:-133px;position:relative;transform:scale(10)}.os-size-observer-listener.ltr{margin-left:0;margin-right:-266px}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:"";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{padding:inherit;border:inherit;box-sizing:content-box;flex:auto;display:block;position:relative}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{direction:ltr;flex:none;bottom:0;right:0;overflow:hidden}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{box-sizing:border-box;z-index:-1;contain:strict;border:none;flex:none;max-width:0;height:0;max-height:1px;margin:0;padding:0;position:relative;top:calc(100% + 1px);overflow:hidden}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;min-width:1px;height:1000%;min-height:1px}html[data-overlayscrollbars-body]{overflow:hidden}html[data-overlayscrollbars-body],html[data-overlayscrollbars-body]>body{width:100%;height:100%;margin:0}html[data-overlayscrollbars-body]>body{margin:0;overflow:visible}[data-overlayscrollbars]{position:relative}[data-overlayscrollbars~=host],[data-overlayscrollbars-padding]{display:flex;scroll-behavior:auto!important;flex-flow:row!important;align-items:stretch!important}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){box-sizing:inherit;z-index:0;border:none;flex:auto;width:100%;min-width:0;height:auto;margin:0;padding:0;position:relative}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){--os-vaw:0;--os-vah:0;outline:none}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]):focus{outline:none}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:"";pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:var(--os-vaw);height:var(--os-vah);position:absolute}[data-overlayscrollbars~=host],[data-overlayscrollbars-padding]{overflow:hidden!important}[data-overlayscrollbars~=host][data-overlayscrollbars~=noClipping],[data-overlayscrollbars-padding~=noClipping]{overflow:visible!important}[data-overlayscrollbars-viewport]{--os-viewport-overflow-x:hidden;--os-viewport-overflow-y:hidden;overflow-x:var(--os-viewport-overflow-x);overflow-y:var(--os-viewport-overflow-y)}[data-overlayscrollbars-viewport~=overflowXVisible]{--os-viewport-overflow-x:visible}[data-overlayscrollbars-viewport~=overflowXHidden]{--os-viewport-overflow-x:hidden}[data-overlayscrollbars-viewport~=overflowXScroll]{--os-viewport-overflow-x:scroll}[data-overlayscrollbars-viewport~=overflowYVisible]{--os-viewport-overflow-y:visible}[data-overlayscrollbars-viewport~=overflowYHidden]{--os-viewport-overflow-y:hidden}[data-overlayscrollbars-viewport~=overflowYScroll]{--os-viewport-overflow-y:scroll}[data-overlayscrollbars-viewport~=overflowImportant]{overflow-x:var(--os-viewport-overflow-x)!important;overflow-y:var(--os-viewport-overflow-y)!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId){font-size:0!important;line-height:0!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):before,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):after,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId)>:not(#osFakeId){clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;display:none!important;position:absolute!important;overflow:hidden!important}[data-overlayscrollbars-viewport~=measuring],[data-overlayscrollbars-viewport~=scrolling]{scroll-behavior:auto!important;scroll-snap-type:none!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowXVisible]{overflow-x:hidden!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowYVisible]{overflow-y:hidden!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not(#osFakeId):not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{grid-template:1fr/1fr;display:grid}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport]{width:auto!important;height:auto!important}@property --os-scroll-percent{syntax:"<number>";inherits:true;initial-value:0}@property --os-viewport-percent{syntax:"<number>";inherits:true;initial-value:0}.os-scrollbar{--os-viewport-percent:0;--os-scroll-percent:0;--os-scroll-direction:0;--os-scroll-percent-directional:calc(var(--os-scroll-percent) - (var(--os-scroll-percent) + (1 - var(--os-scroll-percent)) * -1) * var(--os-scroll-direction));contain:size layout;contain:size layout style;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;position:absolute}body>.os-scrollbar{z-index:99999;position:fixed}.os-scrollbar-transitionless{transition:none!important}.os-scrollbar-track{position:relative;border:none!important;padding:0!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-track,.os-scrollbar-handle{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track,.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{left:0;right:auto}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0;left:calc(var(--os-scroll-percent-directional) * 100%);transform:translateX(calc(var(--os-scroll-percent-directional) * -100%));width:calc(var(--os-viewport-percent) * 100%)}.os-scrollbar-vertical .os-scrollbar-handle{right:0;top:calc(var(--os-scroll-percent-directional) * 100%);transform:translateY(calc(var(--os-scroll-percent-directional) * -100%));height:calc(var(--os-viewport-percent) * 100%)}@supports (container-type:size){.os-scrollbar-track{container-type:size}.os-scrollbar-horizontal .os-scrollbar-handle{transform:translateX(calc(var(--os-scroll-percent-directional) * 100cqw + var(--os-scroll-percent-directional) * -100%));left:auto}.os-scrollbar-vertical .os-scrollbar-handle{transform:translateY(calc(var(--os-scroll-percent-directional) * 100cqh + var(--os-scroll-percent-directional) * -100%));top:auto}.os-scrollbar-rtl.os-scrollbar-horizontal .os-scrollbar-handle{left:0;right:auto}}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{left:0;right:auto}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}@media print{.os-scrollbar{display:none}}.os-scrollbar{--os-size:0;--os-padding-perpendicular:0;--os-padding-axis:0;--os-track-border-radius:0;--os-track-bg:none;--os-track-bg-hover:none;--os-track-bg-active:none;--os-track-border:none;--os-track-border-hover:none;--os-track-border-active:none;--os-handle-border-radius:0;--os-handle-bg:none;--os-handle-bg-hover:none;--os-handle-bg-active:none;--os-handle-border:none;--os-handle-border-hover:none;--os-handle-border-active:none;--os-handle-min-size:33px;--os-handle-max-size:none;--os-handle-perpendicular-size:100%;--os-handle-perpendicular-size-hover:100%;--os-handle-perpendicular-size-active:100%;--os-handle-interactive-area-offset:0}.os-scrollbar-track{border:var(--os-track-border);border-radius:var(--os-track-border-radius);background:var(--os-track-bg);transition:opacity .15s,background-color .15s,border-color .15s}.os-scrollbar-track:hover{border:var(--os-track-border-hover);background:var(--os-track-bg-hover)}.os-scrollbar-track:active{border:var(--os-track-border-active);background:var(--os-track-bg-active)}.os-scrollbar-handle{border:var(--os-handle-border);border-radius:var(--os-handle-border-radius);background:var(--os-handle-bg)}.os-scrollbar-handle:hover{border:var(--os-handle-border-hover);background:var(--os-handle-bg-hover)}.os-scrollbar-handle:active{border:var(--os-handle-border-active);background:var(--os-handle-bg-active)}.os-scrollbar-track:before,.os-scrollbar-handle:before{content:"";display:block;position:absolute;inset:0}.os-scrollbar-horizontal{padding:var(--os-padding-perpendicular) var(--os-padding-axis);right:var(--os-size);height:var(--os-size)}.os-scrollbar-horizontal.os-scrollbar-rtl{left:var(--os-size);right:0}.os-scrollbar-horizontal .os-scrollbar-track:before{top:calc(var(--os-padding-perpendicular) * -1);bottom:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-horizontal .os-scrollbar-handle{min-width:var(--os-handle-min-size);max-width:var(--os-handle-max-size);height:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,height .15s}.os-scrollbar-horizontal .os-scrollbar-handle:before{top:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1);bottom:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-horizontal:hover .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-horizontal:active .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-active)}.os-scrollbar-vertical{padding:var(--os-padding-axis) var(--os-padding-perpendicular);bottom:var(--os-size);width:var(--os-size)}.os-scrollbar-vertical .os-scrollbar-track:before{left:calc(var(--os-padding-perpendicular) * -1);right:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-vertical .os-scrollbar-handle{min-height:var(--os-handle-min-size);max-height:var(--os-handle-max-size);width:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,width .15s}.os-scrollbar-vertical .os-scrollbar-handle:before{left:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1);right:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before{right:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset)) * -1);left:calc(var(--os-padding-perpendicular) * -1)}.os-scrollbar-vertical:hover .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-vertical:active .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-active)}[data-overlayscrollbars-viewport~=measuring]>.os-scrollbar,.os-theme-none.os-scrollbar{display:none!important}.os-theme-dark,.os-theme-light{box-sizing:border-box;--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-border-radius:10px;--os-handle-interactive-area-offset:4px;--os-handle-border-radius:10px}.os-theme-dark{--os-handle-bg:#00000070;--os-handle-bg-hover:#0000008c;--os-handle-bg-active:#000000a8}.os-theme-light{--os-handle-bg:#ffffff70;--os-handle-bg-hover:#ffffff8c;--os-handle-bg-active:#ffffffa8}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport]),[data-overlayscrollbars-viewport~=scrollbarHidden],html[data-overlayscrollbars-viewport~=scrollbarHidden]>body{scrollbar-width:none!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar,[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;width:0!important;height:0!important;display:none!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}:root{--bg:#fff;--page:var(--bg);--fg:#1e1e1e;--muted:#6c6c6c;--line:#eee;--soft:#f5f5f5;--entry:#fff;--tertiary:#d6d6d6;--content:#1f1f1f;--link:#1e1e1e;--link-mark:#31b8cc80;--accent:#1e1e1e;--accent-soft:#2e2e331f;--gap:24px;--content-gap:20px;--nav-width:1380px;--width:720px;--article-width:650px;--article-rail:300px;--article-gap:24px;--header-height:60px;--footer-height:60px;--radius-sm:8px;--space-2:2px;--space-4:4px;--space-5:5px;--space-6:6px;--space-8:8px;--space-10:10px;--space-12:12px;--space-14:14px;--space-16:16px;--space-18:18px;--space-20:20px;--space-24:24px;--space-30:30px;--space-48:48px;--code-canvas:#24273a;--code-ink:#cad3f5;--code-font-size:.84rem;--code-line-height:1.65;--text-2xs:11px;--text-xs:12px;--text-sm:13px;--text-md:14px;--text-base:16px;--text-lg:18px;--text-xl:24px;--text-2xl:32px;--text-3xl:40px;--text-display:160px;--font-ui:"LXGW WenKai Screen", "LXGW WenKai", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;--font-reading:var(--font-ui);--font-mono:"Maple Mono NF CN Web", "Maple Mono NF CN", "Cascadia Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace}:root[data-theme=dark]{--bg:#1d1e20;--fg:#dadadb;--muted:#9b9c9d;--line:#333;--soft:#37383e;--entry:#2e2e33;--tertiary:#414244;--content:#c4c4c5;--link:#dadadb;--accent:#dadadb;--accent-soft:#ececee29}@font-face{font-family:Maple Mono NF CN Web;src:local(Maple Mono NF CN Regular),local(Maple Mono NF CN),url(/fonts/maple-mono-nf-cn-regular.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Maple Mono NF CN Web;src:local(Maple Mono NF CN Bold),url(/fonts/maple-mono-nf-cn-bold.woff2)format("woff2");font-style:normal;font-weight:700;font-display:swap}*{box-sizing:border-box}html{color-scheme:light;scroll-behavior:smooth;overflow-y:auto}:root[data-theme=dark]{color-scheme:dark}body{background:var(--page);min-height:100vh;color:var(--fg);font-family:var(--font-ui);font-size:var(--text-lg);word-break:break-word;font-kerning:normal;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}a{color:var(--link);text-underline-offset:4px}:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:3px;border-radius:4px}img{max-width:100%;display:block}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--tertiary);border:5px solid var(--bg);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar{background:var(--bg)}@media screen and (width>=768px){::-webkit-scrollbar{width:19px;height:11px}}.os-theme-lurkerlin{--os-size:10px;--os-padding-perpendicular:3px;--os-padding-axis:3px;--os-handle-border-radius:999px;--os-handle-bg:color-mix(in srgb, var(--tertiary) 76%, transparent);--os-handle-bg-hover:var(--muted);--os-handle-bg-active:var(--accent);--os-handle-interactive-area-offset:5px}button,input{font:inherit}::selection{color:var(--fg);background:var(--accent-soft)}::view-transition-old(site-content){animation:.12s ease-in both page-leave}::view-transition-new(site-content){animation:.22s cubic-bezier(.22,.75,.25,1) both page-enter}@keyframes page-leave{to{opacity:0;transform:translateY(-4px)}}@keyframes page-enter{0%{opacity:0;transform:translateY(8px)}}.site-shell{flex-direction:column;min-height:100dvh;display:flex}.site-content{flex-direction:column;flex:1 0 auto;display:flex}.site-content>.main{flex:1 0 auto;width:100%}[data-theme=light] body.page-list{--page:var(--soft)}.site-header{z-index:10;height:var(--header-height);background:var(--page);position:relative}.nav-wrap{max-width:calc(var(--nav-width) + 48px);height:var(--header-height);padding:0 var(--gap);justify-content:space-between;align-items:center;gap:var(--space-20);margin:0 auto;display:flex}.logo{align-items:center;gap:var(--space-4);display:inline-flex}.brand{align-items:center;gap:var(--space-8);font-size:var(--text-xl);white-space:nowrap;font-weight:700;text-decoration:none;display:inline-flex}.brand img{border-radius:6px;width:36px;height:36px}.nav-links{align-items:center;gap:var(--space-24);font-size:var(--text-base);display:flex}.nav-links a{align-items:center;gap:var(--space-6);color:var(--fg);text-decoration:none;display:inline-flex}.nav-links a:hover{color:var(--muted)}.nav-links a[aria-current=page]{border-bottom:2px solid;font-weight:500}.nav-icon{flex:none;width:1em;height:1em}.main{max-width:calc(var(--width) + 48px);padding:var(--gap);margin:0 auto}.page-main{padding-top:var(--space-48);padding-bottom:var(--space-48)}.site-footer{max-width:calc(var(--width) + 48px);padding:var(--space-6) var(--gap) var(--space-8);color:var(--muted);text-align:center;font-size:var(--text-2xs);margin:0 auto;line-height:18px}.site-footer a{color:inherit;border-bottom:1px solid var(--muted)}.site-footer a:hover{border-bottom-color:var(--fg)}@media (width<=768px){:root{--gap:14px}.nav-wrap{height:auto;min-height:var(--header-height);padding-top:var(--space-12);padding-bottom:var(--space-12);flex-wrap:wrap;position:relative}.site-header{height:auto}.nav-links{width:100%;padding:var(--space-10) 0 var(--space-4);border-top:1px solid var(--line);flex-wrap:wrap;display:none}.nav-links.nav-open{display:flex}}.page-header{max-width:42rem;margin:0 0 var(--space-48)}.page-header h1,.post-header h1{font-size:var(--text-3xl);line-height:1.2}.page-header h1{align-items:center;gap:var(--space-6);margin:0;display:flex}.page-kicker{margin:0 0 var(--space-8);color:var(--muted);font-size:var(--text-2xs);letter-spacing:1px;text-transform:uppercase;font-weight:500}.post-list{display:block}.post-entry,.lab-card{padding:var(--gap);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--entry);transition:transform .1s;position:relative}.post-entry{margin-bottom:var(--gap)}.post-entry:active,.lab-card:active{transform:scale(.96)}.entry-header h2,.lab-card h2{font-size:var(--text-xl);line-height:1.3}.entry-header h2{margin:0}.entry-content{margin:var(--space-8) 0;color:var(--muted);font-size:var(--text-md);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.6;display:-webkit-box;overflow:hidden}.entry-content p{margin:0}.entry-footer,.post-meta{color:var(--muted);font-size:var(--text-sm)}.entry-link{position:absolute;inset:0}.entry-hint-parent{justify-content:space-between;display:flex}.pagination{margin:calc(var(--gap) * 1.5) 0 var(--gap);display:flex}.pagination a{padding:0 var(--space-16);background:var(--fg);color:var(--bg);font-size:var(--text-sm);border-radius:18px;line-height:36px;text-decoration:none}.pagination .next{margin-inline-start:auto}.paginav,.toc-mobile{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--soft)}.terms-tags,.post-tags{flex-wrap:wrap;padding:0;list-style:none;display:flex}.page-description{margin:var(--space-12) 0 0;color:var(--muted);font-size:var(--text-lg);line-height:1.6}.terms-tags{gap:var(--space-10);margin:0}.terms-tags li{margin:0;font-weight:500}.terms-tags a{padding:3px var(--space-10);background:var(--tertiary);border-radius:6px;text-decoration:none;transition:transform .1s;display:block}.terms-tags a:active{background:var(--tertiary);transform:scale(.96)}.icon-button{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--fg);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.icon-button:hover{background:var(--tertiary)}.menu-toggle{background:var(--soft);margin-left:auto;display:none}.theme-icon{display:inline-flex}.theme-icon svg{width:24px;height:18px}:root[data-theme=dark] #moon,:root[data-theme=light] #sun{display:none}.top-link{visibility:hidden;opacity:0;right:var(--space-30);bottom:var(--footer-height);z-index:99;width:42px;height:42px;padding:var(--space-12);background:var(--tertiary);color:var(--fg);cursor:pointer;border:0;border-radius:64px;transition:visibility .5s,opacity .8s linear;position:fixed}.top-link svg{width:100%;height:100%}.top-link.visible{visibility:visible;opacity:1}.footer-line,.busuanzi-footer{display:block}.busuanzi-footer span{white-space:nowrap}@media (width<=768px){.menu-toggle{justify-content:center;align-items:center;display:inline-flex}}@media (width<=900px){.top-link{transform:translateY(-5rem)}}.home-main{-webkit-user-select:none;user-select:none;display:flex}.buttons,.main .profile{justify-content:center;display:flex}.profile .profile_inner{align-items:center;gap:var(--space-10);flex-direction:column;display:flex}.profile img{object-fit:cover;border-radius:50%;width:256px;height:256px}.profile h1{margin:0;font-size:2em;line-height:1.1}.shake-text{opacity:0;animation:1.6s cubic-bezier(.22,1.27,.36,1) forwards drop-spring;display:inline-block}.shake-text span{will-change:transform, color;animation:.9s 1.6s infinite shake,4s ease-in-out 1.6s infinite tagline-color;display:inline-block}@keyframes drop-spring{0%{opacity:0;transform:translate(-200px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%{transform:translate(0)rotate(0)}25%{transform:translate(.5px,-.5px)rotate(-.3deg)}50%{transform:translate(-.6px,.6px)rotate(.2deg)}75%{transform:translate(.4px,.4px)rotate(.2deg)}to{transform:translate(0)rotate(0)}}@keyframes tagline-color{0%{color:#ff91a4}50%{color:#7fd59f}80%{color:#5bb1ff}to{color:#ff91a4}}.social-icons{justify-content:center;gap:var(--space-12);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.social-icons a{width:26px;height:26px;color:var(--fg);text-decoration:none;display:inline-flex}.social-icons svg{width:100%;height:100%}.buttons{flex-wrap:wrap;max-width:400px}.button{margin:var(--space-8);padding:var(--space-6);border-radius:var(--radius-sm);background:var(--tertiary);text-decoration:none;transition:transform .1s}.button-inner{padding:0 var(--space-8);align-items:center;display:inline-flex}.button:active{transform:scale(.96)}.lanyard-stage{pointer-events:none;width:30rem;height:40rem;position:absolute;top:-5rem;right:-8rem}.main .profile{text-align:center;width:100%;font-family:var(--font-reading);flex:1;align-items:center;position:relative}@media (width<=768px){.profile img{transform:scale(.85)}}@media (width<=900px){.lanyard-stage{display:none}}.article-main{max-width:calc(var(--article-width) + var(--article-gap) + var(--article-rail) + 48px);padding-top:var(--gap);padding-bottom:calc(var(--gap) * 2)}.post-header{max-width:var(--article-width);margin:var(--gap) 0 var(--content-gap)}.post-header h1{margin:0 0 var(--space-2)}.post-header .post-meta{gap:var(--space-4) 0;font-size:var(--text-md);flex-wrap:wrap;margin:0;display:flex}.article-layout{grid-template-columns:minmax(0, var(--article-width)) minmax(180px, var(--article-rail));align-items:start;gap:var(--article-gap);display:grid}.article-column{grid-area:1/1;min-width:0}.paginav{margin-top:var(--content-gap);line-height:30px;display:flex}.post-tags{gap:var(--space-8);margin:var(--space-30) 0 var(--space-18)}.post-tags a{padding:0 var(--space-14);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--soft);color:var(--muted);font-size:var(--text-md);line-height:34px;text-decoration:none;display:block}.post-tags a:hover{background:var(--line)}.paginav a,.paginav>span{width:50%;padding:0 var(--space-14);text-decoration:none}.paginav .next{text-align:right;margin-inline-start:auto}.paginav .title{color:var(--muted);letter-spacing:1px;text-transform:uppercase;font-size:small}@media (width<=1100px){.article-main{max-width:calc(var(--article-width) + 48px)}.article-layout{display:block}}.post-content{color:var(--content);margin:var(--space-30) 0;font-family:var(--font-reading);font-size:var(--text-lg);line-break:strict;overflow-wrap:anywhere;line-height:1.6}.post-content>h1:first-child{display:none}.post-content :where(h2,h3,h4,h5,h6){color:var(--fg);text-wrap:balance;scroll-margin-top:40px;font-weight:700;line-height:1.2}.post-content h2{margin:32px auto var(--space-24);font-size:var(--text-2xl)}.post-content h3{margin:var(--space-24) 0 var(--space-16);font-size:var(--text-xl)}.post-content h4{margin:var(--space-24) 0 var(--space-16);font-size:var(--text-base)}.post-content h5{margin:var(--space-24) 0 var(--space-16);font-size:var(--text-md)}.post-content h6{margin:var(--space-24) 0 var(--space-16);font-size:var(--text-xs)}.anchor{color:var(--muted);user-select:none;font-weight:500;display:none}:where(h1,h2,h3,h4,h5,h6):hover .anchor{margin-inline-start:var(--space-8);display:inline-flex}.post-content p{margin:0 0 var(--content-gap)}.post-content :where(ul,ol){margin:0 0 var(--content-gap);padding-inline-start:var(--space-20)}.post-content li{margin-top:var(--space-5)}.post-content li p{margin-bottom:0}.post-content strong{font-weight:700}.post-content a{background:linear-gradient(to bottom, transparent 70%, var(--link-mark) 70%);-webkit-box-decoration-break:clone;box-decoration-break:clone;text-decoration:none}.post-content blockquote{margin:var(--space-20) 0;padding:0 var(--space-14);border-inline-start:3px solid var(--fg)}.post-content blockquote>:first-child{margin-top:0}.post-content blockquote>:last-child{margin-bottom:0}.post-content hr{height:2px;margin:var(--space-30) 0;background:var(--tertiary);border:0}.post-content img{border-radius:4px;height:auto;margin:1rem auto}.post-content table{width:100%;margin-bottom:var(--content-gap);border-collapse:collapse;border-spacing:0;word-break:keep-all;display:block;overflow-x:auto}.post-content th,.post-content td{min-width:80px;padding:var(--space-8) var(--space-5);border-bottom:1px solid var(--line);text-align:start;vertical-align:top;line-height:1.5}.post-content th{font-weight:700}.post-content :not(pre)>code{margin:auto var(--space-4);padding:var(--space-4) var(--space-6);background:var(--soft);font-family:var(--font-mono);font-variant-ligatures:common-ligatures contextual;overflow-wrap:break-word;border-radius:2px;font-size:.78em;line-height:1.5}.post-content>pre{margin:var(--space-10) auto;padding:var(--space-10);border-radius:var(--radius-sm);background:var(--soft);font-family:var(--font-mono);font-variant-ligatures:common-ligatures contextual;font-size:var(--code-font-size);line-height:var(--code-line-height);overflow-x:auto}.post-content .expressive-code{font-variant-ligatures:common-ligatures contextual;margin:1.8em 0}.post-content .expressive-code pre::selection,.post-content .expressive-code pre ::selection{color:var(--code-canvas);background:var(--code-ink)}.post-content mjx-container[display=true]{max-width:100%;padding:.25em 0;overflow:auto hidden;margin:1.8em 0!important}.post-content .obsidian-callout{margin:var(--content-gap) 0;border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:var(--radius-sm);background:var(--soft);color:var(--fg);padding:1em 1.1em}.post-content .obsidian-callout>:first-child{margin-top:0}.post-content .obsidian-callout>:last-child{margin-bottom:0}.post-content .obsidian-callout-title{font-family:var(--font-ui);margin-bottom:.45em;font-weight:700;display:block}.toc-rail{min-width:0;padding-left:var(--space-16);border-left:1px solid var(--line);grid-area:1/2;align-self:stretch}.toc-panel{top:var(--gap);max-height:calc(100vh - (var(--gap) * 2));scrollbar-width:thin;position:sticky;overflow-y:auto}.toc-label{padding:var(--space-8) 0;color:var(--muted);font-size:var(--text-sm);cursor:zoom-in;user-select:none;margin:0;font-weight:500;list-style:none;display:block}.toc-label::-webkit-details-marker{display:none}.toc-list{margin:0 0 var(--space-20);padding:0;list-style:none;display:grid}.toc-item{min-width:0;padding-bottom:var(--space-6);font-size:var(--text-sm);list-style:none}.toc-item a{color:var(--muted);line-height:1.45;text-decoration:none;display:block}.toc-item a:hover{color:var(--muted)}.toc-item a[aria-current]{color:var(--fg);font-size:inherit;font-weight:600}.toc-level-3{padding-left:var(--space-12)}.toc-mobile{margin:0 0 34px;display:none}.toc-mobile summary{justify-content:space-between;align-items:center;gap:var(--space-16);padding:var(--space-12) var(--space-14);cursor:pointer;font-size:.84rem;font-weight:650;list-style:none;display:flex}.toc-mobile summary::-webkit-details-marker{display:none}.toc-mobile summary:after{content:"+";color:var(--muted);margin-left:auto;font-size:1rem}.toc-mobile[open] summary:after{content:"−"}.toc-mobile .toc-count{color:var(--muted);font-size:.74rem;font-weight:400}.toc-mobile nav{max-height:55vh;padding:var(--space-2) var(--space-14) var(--space-14);overflow-y:auto}.toc-mobile .toc-list{margin:0;padding:0}@media (width<=1100px){.toc-rail{display:none}.toc-mobile{display:block}}.archive-posts{width:100%;font-size:var(--text-base)}.archive-year{margin-top:40px}.archive-year:not(:last-of-type){border-bottom:2px solid var(--line)}.archive-year-header{margin:0;font-size:1.5em;line-height:1.2}.archive-header-link{color:inherit;text-decoration:none}.archive-month{padding:var(--space-10) 0;align-items:flex-start;display:flex}.archive-month:not(:last-of-type){border-bottom:1px solid var(--line)}.archive-month-header{width:200px;margin:25px 0;font-size:1.17em;font-weight:700}.archive-entry{padding:var(--space-5);margin:var(--space-10) 0;position:relative}.archive-entry-title{margin:var(--space-5) 0;font-size:1.17em;font-weight:400;line-height:1.3}.archive-count,.archive-meta{color:var(--muted);font-size:var(--text-md)}@media (width<=768px){.archive-year{margin-top:var(--space-20)}.archive-month{flex-direction:column}}#searchbox input{width:100%;margin:var(--space-4) 0 var(--space-12);padding:var(--space-4) var(--space-10);border:2px solid var(--tertiary);border-radius:var(--radius-sm);background:var(--entry);color:var(--fg);outline:none;font-weight:700}#searchbox input:focus{border-color:var(--muted)}#searchResults{width:100%;margin:var(--space-10) 0;padding:0;list-style:none}#searchResults li{margin:var(--space-10) 0;padding:var(--space-10);border-radius:var(--radius-sm);font-weight:500;position:relative}.search-status{min-height:1.5em;margin:0 0 var(--space-10);color:var(--muted);font-size:.85rem}.error-page{min-height:calc(100vh - var(--header-height) - var(--footer-height));text-align:center;place-content:center;justify-items:center;display:grid}.error-code{color:var(--fg);font-size:var(--text-display);margin:0;font-weight:700;line-height:1}.labs-main{padding-top:var(--space-48);padding-bottom:var(--space-48)}.labs-grid{gap:var(--gap);grid-template-columns:repeat(3,1fr);display:grid}.lab-card{min-height:240px;color:var(--fg);flex-direction:column;text-decoration:none;display:flex}.lab-number{color:var(--muted);font-size:var(--text-sm);letter-spacing:1px}.lab-card h2{margin:32px 0 var(--space-12)}.lab-card p{color:var(--muted);font-size:var(--text-md);margin:0;line-height:1.6}.lab-card small{padding-top:var(--space-20);color:var(--muted);font-size:var(--text-sm);margin-top:auto}.lab-card-arrow{top:var(--gap);right:var(--gap);color:var(--muted);position:absolute}.lab-page{max-width:1050px;padding-top:var(--gap);padding-bottom:var(--space-48)}.lab-back{color:var(--muted);font-size:var(--text-md);text-decoration:none}.lab-back:hover{color:var(--fg)}.lab-page .lab-hero{margin:var(--gap) 0 var(--content-gap)}.lab-note{margin-top:var(--content-gap);padding:var(--space-16) var(--space-18);border-left:4px solid var(--muted);border-radius:var(--radius-sm);background:var(--soft);color:var(--muted);font-size:var(--text-md);line-height:1.6}.lab-note strong{color:var(--fg)}@media (width<=768px){.labs-grid{grid-template-columns:1fr}.lab-card{min-height:180px}.lab-card h2{margin-top:var(--space-24)}}.toy-body{background:var(--bg);overflow:hidden}.toy-workspace{width:100vw;height:100dvh;padding:60px var(--space-12) var(--space-12)}.toy-back{top:var(--space-16);left:var(--space-16);z-index:300;padding:var(--space-6) var(--space-12);border:1px solid var(--line);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--page) 88%, transparent);color:var(--fg);font-size:var(--text-sm);backdrop-filter:blur(8px);text-decoration:none;position:fixed}.toy-back:hover{background:var(--tertiary)}.toy-index{place-items:center;width:100%;height:100%;padding:clamp(72px,12vh,144px) clamp(8px,7vw,120px) clamp(24px,8vh,96px);display:grid}.toy-index-grid{gap:var(--gap);grid-template-columns:repeat(2,minmax(0,1fr));width:min(100%,1080px);display:grid}.toy-card{min-height:220px;padding:var(--space-20);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--page);color:var(--fg);flex-direction:column;text-decoration:none;transition:transform .16s,border-color .16s;display:flex;position:relative}.toy-card:hover{border-color:var(--muted);transform:translateY(-3px)}.toy-card-number,.toy-card small{color:var(--muted);font-size:var(--text-sm)}.toy-card h1{margin:auto 0 var(--space-10);font-size:var(--text-2xl)}.toy-card p{color:var(--muted);margin:0}.toy-card small{margin-top:var(--space-20)}.toy-demo{width:100%;height:100%;min-height:0;display:flex}.toy-demo>astro-island{width:100%;height:100%;min-height:0;display:block}.toy-demo astro-island>.holo-studio-page,.toy-demo astro-island>.lab-demo,.toy-demo astro-island>.lab-launcher{width:100%;height:100%;min-height:0}.toy-demo astro-island>.holo-studio-page,.toy-demo astro-island>.lab-demo{flex-direction:column;display:flex}@media (width<=700px){.toy-workspace{padding:52px var(--space-8) var(--space-8)}.toy-back{top:var(--space-10);left:var(--space-10)}.toy-index{padding:64px 0 var(--space-10);overflow-y:auto}.toy-index-grid{grid-template-columns:1fr}.toy-card{min-height:170px}.toy-body{overflow:auto}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
